最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Swoole搭建WebSocket服务需要哪些步骤
时间:2026-07-21 09:35:54 编辑:袖梨 来源:一聚教程网
要在PHP环境中用Swoole创建可运行的WebSocket服务,必须完成扩展安装、服务端脚本编写、端口放行与进程启动四个环节:先用pecl install swoole安装并启用扩展,再编写含open/message/close事件回调的ws_server.php脚本,接着放行9501端口并用php ws_server.php启动,最后通过ws://协议前端连接验证。
要在PHP环境中用Swoole创建一个可运行的WebSocket服务,必须完成扩展安装、服务端脚本编写、端口放行与进程启动四个不可跳过的环节,缺一不可。
确认并安装Swoole扩展
先检查PHP是否已启用swoole扩展:执行 php -m | grep swoole,若无输出则需安装。
推荐使用pecl一键安装:pecl install swoole,安装完成后在php.ini中添加 extension=swoole 并重启PHP服务。
【必须重启PHP服务,否则新扩展不会生效】
验证是否成功:新建 test.php,写入 <?php var_dump(extension_loaded('swoole'));,浏览器或CLI执行返回 bool(true) 即表示就绪。
编写WebSocket服务器脚本
新建文件 ws_server.php,内容如下:
第一步:实例化 SwooleWebSocketServer,绑定监听地址和端口(如 "0.0.0.0", 9501);
第二步:注册 open 事件回调——客户端完成HTTP握手后触发,此时可获取 $request->fd、$request->get、Cookie等信息;
第三步:注册 message 事件回调——收到客户端消息时执行,用 $server->push($frame->fd, $data) 单发,或遍历 $server->connections 广播;
第四步:注册 close 事件回调——连接断开时清理资源,避免fd残留;
最后调用 $server->start() 启动服务。
开放端口并启动服务
方法一:命令行直接启动
进入脚本所在目录,执行 php ws_server.php。服务将在后台持续运行,终端会显示启动日志。
方法二:守护进程部署(生产环境必需)
使用supervisor管理进程,配置 autostart=true 和 autorestart=true,防止意外退出。
【防火墙必须放行9501(或你设定的端口),否则外部无法建立WebSocket连接】
宝塔面板用户:在「安全」页面手动放行该端口;CentOS系统执行 firewall-cmd --permanent --add-port=9501/tcp && firewall-cmd --reload。
前端连接测试
打开Chrome开发者工具控制台,粘贴以下代码:
const ws = new WebSocket("ws://你的服务器IP:9501");
ws.onopen = () => console.log("已连接");
ws.onmessage = e => console.log("收到:", e.data);
ws.send("hello");
若控制台打印“已连接”,且服务端PHP进程输出“客户端 xxx 已连接”,说明握手成功。
注意:不能用 http:// 地址测试,必须用 ws:// 协议;本地测试可用 ws://127.0.0.1:9501。
相关文章
- 爱剪辑编辑视频方法 07-28
- OA系统快速发送私信技巧 07-28
- 谷歌浏览器如何发送反馈 07-28
- 如何在excel表格里制作柱形动态图表 07-28
- 悟空浏览器怎么分享 07-28
- soundlock 怎样设置开机自启 07-28