在Thinkphp或者BuildAdmin中均可。
一、使用workman的websocket(最简单的)
1、使用composer下载相关依赖
composer require workerman/workerman:4.2.*
2、建立基本类
一个类就够了——基础的,不用担心和框架的集成问题,随便放项目的文件夹中
<?php
require_once '../vendor/autoload.php';
use Workerman\Worker;
// 创建 WebSocket 服务
$ws_worker = new Worker("websocket://0.0.0.0:8080");
// 当有新客户端连接时触发的回调函数
$ws_worker->onConnect = function($connection) {
echo "新客户端连接\n";
};
// 当有客户端发送消息时触发的回调函数
$ws_worker->onMessage = function($connection, $data) {
echo "receive message: $data\n";
$connection->send("$data_from_server: $data");
};
// 当有客户端断开连接时触发的回调函数
$ws_worker->onClose = function($connection) {
echo "客户端断开连接\n";
};
// 当出现错误时触发的回调函数
$ws_worker->onError = function($connection, $code, $msg) {
echo "连接出错:$code $msg\n";
};
// 如果是在命令行直接启动该脚本,运行所有 Worker
if (!defined('GLOBAL_START')) {
Worker::runAll();
}
3、运行
这种方式通过在终端使用命令行即可启动:
php WebSocketServer.php start
运行成功的截图:
如果出现截图如下,均运行失败:
二、宝塔项目部署:
在网站项目——>设置——>配置文件中添加下面代码:
location /wss {
proxy_pass http://0.0.0.0:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
部署注意事项:
1、端口要和WebSocketServer.php中端口对应;
2、如果添加上述代码保存报错的话,排查ngnix和所有站点配置文件:如果其他站点配置文件有误,也会影响本网站。
3、中途删除代码前要记得停止服务,不然就算代码删除了,服务依旧在运行,使用命令行:
php WebSocketServer.php stop
三、测试前端连接
1、在Apifox测试工具
更多功能——>新建WebSocket接口:可以测试并查看连接和发送信息情况
格式为:wss://域名/wss或ws://域名/wss
2、微信开发者工具
格式:wss://域名/wss(开发环境中可使用ws://域名/wss,但是发布版本要wss开头并配置ssl证书——小程序要求,不然无法正常使用)
101的状态码表示连接成功。