如何用webSocket与Swoole打造一个小型聊天室
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了如何用webSocket与Swoole打造一个小型聊天室的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用webSocket与Swoole打造一个小型
千家信息网最后更新 2026年11月03日如何用webSocket与Swoole打造一个小型聊天室
这篇文章主要介绍了如何用webSocket与Swoole打造一个小型聊天室的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用webSocket与Swoole打造一个小型聊天室文章都会有所收获,下面我们一起来看看吧。
前端页面代码:
打工人聊天室 你好打工人:昵称聊天区域
本次连接FD:
JS 代码:
在服务器信息回执时,会有第一次连接回执,还是服务端发送消息回执的状态区别,通过 msgType 来分辨,如果是第一次连接的回执消息,则把 FD 做一个页面留存,并不显示在聊天消息区,如果收到的是消息回执,就直接显示到聊天消息区。
还有就是,前后端相互通信发送的东西,都是字符串性质最优,我前端处理的方法是先组合成一个对象,然后转 JSON 串。
服务端代码
协程,都需要在 Co\run(function () {}) 里。
set([ 'heartbeat_idle_time' => 600, // 表示一个连接如果600秒内未向服务器发送任何数据,此连接将被强制关闭 'heartbeat_check_interval' => 60, // 表示每60秒遍历一次 ]); $server->handle('/websocket', function ($request, $ws) { $ws->upgrade(); global $wsObjects; $objectId = getObjectId($ws); $wsObjects[$objectId] = $ws; while (true) { $frame = $ws->recv(); if ($frame === '') { unset($wsObjects[$objectId]); $ws->close(); break; } else if ($frame === false) { echo 'error : ' . swoole_last_error() . "\n"; break; } else { if ($frame->data == 'close' || get_class($frame) === Swoole\WebSocket\CloseFrame::class) { unset($wsObjects[$objectId]); $ws->close(); return; } //格式化接收到json $data = json_decode($frame->data); switch ($data->msgType){ case 'open': //链接第一次 $data = json_encode([ 'fd' => $objectId, 'msgType' => 1 //代表第一次连接,前端处理fd ]); $ws->push($data); break; case 'ping': //接收到心跳 不作回复// echo $data->msgType; break; default : // 原基础上不动,增加一些自定义 $data->msgType = 2; //代表服务器端回复 $data->time = date('Y-m-d H-i-s'); $data = json_encode($data); foreach ($wsObjects as $obj) { $obj->push($data); } } } } }); $server->start(); });代码齐全之后,接下来就只需要在控制台执行以下 PHP 文件就行。
然后前台直接访问你的网站地址,我的是本地 127.0.0.1
多开几个窗口模拟多个用户,然后发送消息测试即可
关于"如何用webSocket与Swoole打造一个小型聊天室"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"如何用webSocket与Swoole打造一个小型聊天室"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
服务
服务器
消息
聊天室
回执
代码
第一次
前端
知识
链接
成功
代表
内容
后台
字符
字符串
格式
篇文章
页面
处理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海互联网科技有限公司
礼当家互联网科技
互联网科技排名
远拓互联网科技
广州互联网络科技有限公司
上海亿帐通互联网科技
中国互联网金融科技基金
无锡溥仪互联网科技有限公司
赶超互联网科技 微信多开
千方科技属于互联网企业吗
互联网5g黑科技有哪些
中国互联网十大科技股排名
互联网科技人工智能实验室
如何创新互联网科技
深圳市罗太互联网科技有限公司
黑科技 体验场景 互联网大会
互联网高科技行业有哪些企业
长沙渺峰互联网科技有限公司
现代科技的标志之一的互联网
武汉亿视互联网科技有限公司
美国互联网科技
奇酷互联网科技公司
百单互联网科技有限公司
广州凡科互联网科技
广州善班互联网科技
呼和浩特新华互联网科技学院
广州有谷有贝互联网科技有限公司
艺电能源互联网科技有限公司招聘
互联网时代高科技布局
10位科技互联网大佬