Laravel+Swoole 完成一个简单的在线聊天室
前言
前几天一个朋友咨询我关于在线聊天的事情,所以我就顺手写了一个简单的在线聊天系统。
由于我是使用了最新版的Laravel
,所以需要在PHP7.0
以上的版本才可以搭建,具体的安装和使用可以参考GitHub
。感兴趣的可以star
或者fork
。
chat.gif
WebSocket
网页版的在线聊天一般分为两种方式,轮询和全双工。以传统的HTTP
形式来做,Server
没办法主动的向Client
发送消息,而像WebSocket
这种全双工形式则不太一样,二者保持长连接,并且能让Server
主动的推送消息到Client
,这就大大节省了请求资源。
而Swoole
非常方便的以扩展的形式集成了这些高级功能。
思路
建立用户,创建房间这种非常简单的业务逻辑就不再赘述,这里主要讲一下聊天的实现。
由于Swoole
的WebSocket
都是单独的建立一个PHP
进程,所以在数据共享上面我使用了Redis
,使用SET
来完成每个房间成员的统计,使用HASH
来完成每个Connect ID
对于房间号的绑定。关于Redis
每种类型的使用以及实现原理可以参考我之前写的这篇文章:聊一聊Redis的数据结构。Swoole
我以command
的形式来处理逻辑,主要参考了这篇文章。
文章首发地址:我的博客
欢迎关注我的公众号,每周至少一篇比较有深度的原创文章:
参考
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: