欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Laravel+Swoole 完成一个简单的在线聊天室 有大用

Laravel+Swoole 完成一个简单的在线聊天室

前言

前几天一个朋友咨询我关于在线聊天的事情,所以我就顺手写了一个简单的在线聊天系统。
由于我是使用了最新版的 Laravel,所以需要在 PHP7.0 以上的版本才可以搭建,具体的安装和使用可以参考 GitHub。感兴趣的可以 star 或者 fork

GitHub
在线体验

chat.gif

file


WebSocket

网页版的在线聊天一般分为两种方式,轮询和全双工。以传统的 HTTP 形式来做,Server 没办法主动的向 Client 发送消息,而像 WebSocket 这种全双工形式则不太一样,二者保持长连接,并且能让 Server 主动的推送消息到 Client,这就大大节省了请求资源。
而 Swoole 非常方便的以扩展的形式集成了这些高级功能。

思路

建立用户,创建房间这种非常简单的业务逻辑就不再赘述,这里主要讲一下聊天的实现。
由于 Swoole 的 WebSocket 都是单独的建立一个 PHP 进程,所以在数据共享上面我使用了 Redis,使用 SET 来完成每个房间成员的统计,使用 HASH 来完成每个 Connect ID 对于房间号的绑定。关于 Redis 每种类型的使用以及实现原理可以参考我之前写的这篇文章:聊一聊 Redis 的数据结构
Swoole 我以 command 的形式来处理逻辑,主要参考了这篇文章

文章首发地址:我的博客

参考

Laravel 如何优雅的使用 Swoole

Nine

来自 https://learnku.com/articles/6287/laravelswoole-completes-a-simple-online-chat-room

普通分类: