首先需确认环境支持并安装Swoole扩展,然后创建WebSocket服务器文件,通过命令行启动服务,实现独立于HTTP的长连接通信。

要在PHP一键环境(如宝塔、phpStudy、XAMPP等)中配置WebSocket服务,关键在于理解WebSocket是独立于HTTP的协议,不能直接通过Apache/Nginx处理。PHP本身也不原生支持长连接,因此需要额外搭建WebSocket服务。以下是具体配置步骤。
1. 确认环境支持
大多数PHP一键环境默认只支持HTTP服务,要运行WebSocket,需确保:
- 服务器开放了所需端口(如9501、8080等)
- PHP已安装Swoole或Workerman扩展(推荐Swoole)
- 命令行可执行PHP脚本(用于启动WebSocket服务)
以宝塔面板为例:在“软件商店”中安装Swoole扩展(PHP版本对应安装),或手动编译安装。
2. 使用Swoole搭建WebSocket服务
Swoole是高性能的PHP协程框架,支持WebSocket协议。以下是一个基础示例:
立即学习“PHP免费学习笔记(深入)”;
创建WebSocket服务器文件(如 websocket_server.php):
on('open', function ($server, $req) {
echo "客户端 {$req->fd} 已连接\n";
});
$server->on('message', function ($server, $frame) {
echo "收到消息: {$frame->data}\n";
$server->push($frame->fd, "服务端回复: " . $frame->data);
});
$server->on('close', function ($server, $fd) {
echo "客户端 {$fd} 已断开\n";
});
$server->start();
将此文件放在网站目录下(如 /www/wwwroot/your_site/)。
3. 启动WebSocket服务
通过命令行启动服务(不能通过浏览器访问启动):
- 登录服务器终端
- 执行:
php /www/wwwroot/your_site/websocket_server.php
看到输出“客户端 xx 已连接”表示服务已运行。
注意:- 服务必须常驻运行,建议使用 screen 或 supervisor 守护进程
- 防火墙和安全组需放行 9501 端口
- 宝塔需在“安全”中添加端口放行规则
4. 前端连接测试
在HTML页面中使用JavaScript连接:
如果控制台显示连接成功并收到回复,说明WebSocket服务正常。
5. 常见问题解决
- Connection refused:检查端口是否开放、服务是否启动
-
Swoole未安装:在PHP探针中查看是否有swoole扩展,或运行
php -m | grep swoole -
服务一关闭终端就停止:使用
screen -S ws php websocket_server.php后台运行











