全部
常见问题
产品动态
精选推荐

swoole+websocket实现聊天室功能

管理 管理 编辑 删除

基础介绍

(1) Swoole是一款面向生产环境的PHP异步网络通信引擎,可用于开发高性能的异步并发TCP、UDP、Unix Socket、HTTP和WebSocket服务。Swoole在互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网和智能家居等领域得到广泛应用。使用PHP + Swoole作为网络通信框架可以极大提升企业IT研发团队的效率。

(2) WebSocket是一种通过单个TCP连接进行全双工通信的协议。它于2011年由IETF定为标准RFC 6455,并由RFC7936进行补充规范。同时,WebSocket API也被W3C定为标准。

借助WebSocket,客户端和服务器之间的数据交换更加简便,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需进行一次握手,便可建立持久性连接并进行双向数据传输。

(3) 本文将介绍如何利用Swoole和WebSocket实现一个简易的聊天室。对于熟悉网络通信协议的读者来说,这不会是一个陌生的话题。

功能需求及问题处理

web端:

(1) 每次刷新都会生成一个唯一的ID(id值从1开始).

(2) 第一次进入网站时会要求用户设置昵称并会与ID进行绑定。

问题点:

(1) 刷新页面后用户标志(ID)会重新生成,之前生成ID被弃用。

(2) WebSocket生成了新的用户ID,但是跟现在的无法形成关联关系。

server端:

(1) 当用户进入聊天室后,发送广播给所有人并加入聊天群组(使用redis存储)。

(2) 当用户退出直播间后,发送广播给所有人并清除该用户的记录。

(3) 用户每发送一次消息都要形成新的记录广播给所有人。

(4) 用户生成新的昵称后把昵称推送给他。

web端问题处理方法:

(1) 浏览器刷新时提醒用户刷新即将重新获得新的身份。

(2) 用户连接成功后记录用户name,每次连接把这个name带上,清除之前该name的绑定关系,形成新的关系。

聊天室演示

077af202309260956464942.png

代码实现

总结

这篇文章只是简单的介绍前后端如何实现通信,很多的细节问题没有进行处理。 UI比较low,这里大家只看代码就好了…

请登录后查看

CRMEB-慕白寒窗雪 最后编辑于2023-09-26 10:06:48

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
2976
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服