前言
前几天一个朋友咨询我关于在线聊天的事情,所以我就顺手写了一个简单的在线聊天系统。
由于我是使用了最新版的Laravel,所以需要在PHP7.0以上的版本才可以搭建,具体的安装和使用可以参考GitHub。
WebSocket
网页版的在线聊天一般分为两种方式,轮询和全双工。以传统的HTTP形式来做,Server没办法主动的向Client发送消息,而像WebSocket这种全双工形式则不太一样,二者保持长连接,并且能让Server主动的推送消息到Client,这就大大节省了请求资源。
而Swoole非常方便的以扩展的形式集成了这些高级功能。
思路
建立用户,创建房间这种非常简单的业务逻辑就不再赘述,这里主要讲一下聊天的实现。
由于Swoole的WebSocket都是单独的建立一个PHP进程,所以在数据共享上面我使用了Redis,使用SET来完成每个房间成员的统计,使用HASH来完成每个Connect ID对于房间号的绑定。关于Redis每种类型的使用以及实现原理可以参考我之前写的这篇文章:
聊一聊Redis的数据结构。Swoole我以command的形式来处理逻辑,主要参考了这篇文章。
文章首发地址:我的博客
参考
本文由 nine 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Oct 2, 2017 at 10:43 am