ThinkPHP 5.0.24需借助Workerman实现WebSocket,推荐使用topthink/think-worker=1.0.*配合Workerman 3.5.x,在项目根目录新建server.php作为服务入口。

ThinkPHP 5.0.24 本身不内置 WebSocket 支持,需借助 Workerman 或 Swoole 扩展实现。最常用、兼容性最好的方案是使用 topthink/think-worker(v1.0.*)配合 Workerman,以下是清晰可行的步骤:
确认版本匹配关系
TP5.0.24 必须使用 think-worker 1.0 版本,高版本(如 2.0+)不兼容:
- 执行命令:
composer require topthink/think-worker=1.0.* - 若已误装高版本,先运行
composer remove topthink/think-worker再重装指定版本 - Workerman 底层建议用 3.5.x(如 3.5.31),与 PHP 5.6+ 兼容稳定
配置服务入口文件 server.php
在项目根目录(与 application 同级)新建 server.php,内容如下:
#!/usr/bin/env php
<?php
define('APP_PATH', __DIR__ . '/application/');
define('BIND_MODULE', 'push/Worker'); // 指向你的 WebSocket 控制器模块
require __DIR__ . '/thinkphp/start.php';
- 注意路径拼写准确,
__DIR__是当前文件所在目录,确保thinkphp/start.php可访问 -
BIND_MODULE格式为模块名/控制器名,例如push/Worker对应application/push/controller/Worker.php
编写 WebSocket 控制器
在 application/push/controller/Worker.php 中创建控制器,关键点包括:
立即学习“PHP免费学习笔记(深入)”;
- 继承
\think\worker\Server(不是普通控制器) -
$socket属性必须设为websocket://0.0.0.0:2346(监听所有网卡,不能写127.0.0.1,否则外部无法连接) - 实现
onConnect、onMessage、onClose等回调方法 - 端口如
2346需提前在服务器防火墙和云平台安全组中放行(如阿里云 ECS、腾讯云 CVM)
启动与验证
在项目根目录执行:
- 启动服务:
php server.php start(Linux/macOS)或php server.php start -d后台运行 - Windows 下需额外安装
workerman/workerman-for-win并确保有 pcntl 扩展模拟支持 - 浏览器用
ws://你的公网IP:2346连接测试(非http://),可用简单 HTML + JS 验证握手是否成功 - 查看日志:默认输出到控制台;可加
echo或写入文件辅助调试连接生命周期
不复杂但容易忽略



















