在去年,我们公司内部实现了一个聊天室系统,实现了一个即时在线聊天室功能,可以进行群组,私聊,发图片,文字,语音等功能,那么,这个聊天室是怎么实现的呢?后端又是怎么实现的呢?...后端框架
在后端框架上,我选用了php的easyswoole,easyswoole作为swoole中最简单易学的框架,上手简单,文档齐全,社区活跃
直接通过easyswoole官方文档的例子,即可实现一个...websocket服务器,并且还实现了对控制器的转发等:
https://www.easyswoole.com/Cn/Socket/webSocket.html
前后端通信协议
由于考虑到聊天室的业务逻辑复杂...,我们使用了http+websocket 2种协议,分别用在以下几个地方:
登录注册,个人信息修改,好友申请等,使用http 接口实现
私聊,群聊消息推送,系统消息申请等,使用websocket即时推送...websocket即时推送封包方式
在websocket中,为了区分客户端不同的操作(发送群消息,发送私聊消息等),我们定义了一个数据格式:
- op 命令
- args 额外参数
- msg 消息内容