1. 环境准备与基础配置
在开始部署WebSocket服务之前,我们需要确保服务器环境已经准备就绪。宝塔面板作为一款强大的服务器管理工具,能够极大简化我们的配置流程。首先登录宝塔面板,进入"软件商店"安装以下必备组件:
- PHP 7.4+:Workerman对PHP版本有要求,建议选择7.4版本
- Nginx/Apache:根据项目需求选择Web服务器
- MySQL:如果FastAdmin需要使用数据库
- Supervisor:用于守护进程管理(可选但推荐)
安装完成后,我们需要检查PHP扩展是否完整。进入宝塔的PHP管理界面,确保以下扩展已经安装:
- pcntl(进程控制)
- posix(系统调用)
- sockets(套接字支持)
如果发现缺少扩展,直接在宝塔面板中点击安装即可。我曾经遇到过pcntl扩展缺失导致Workerman无法启动的情况,所以这一步检查非常重要。
2. 创建WebSocket服务项目
在FastAdmin项目根目录下创建websocket文件夹,这个位置的选择很有讲究。我建议放在与application同级的目录,这样既方便代码管理,又能保持项目结构清晰。新建server.php文件,内容如下:
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
// 创建WebSocket服务器,监听2345端口
$ws_worker = new Worker("websocket://0.0.0.0:2345");
// 启动4个进程对外提供服务
$ws_worker->count = 4;
// 保存所有客户端连接
$clients = [];
// 当有客户端连接时
$ws_worker->onConnect = function(TcpConnection $connection) use (&$clients) {
$connection->onWebSocketConnect = function(TcpConnection $connection) use (&$clients) {
$clients[$connection->id] = $connection;
echo "New connection: {$connection->id}\n";
};
};
// 消息处理逻辑
$ws_worker->onMessage = function(TcpConnection $connection, $data) use (&$clients) {
foreach ($clients as $client) {
$client->send($da


5248

被折叠的 条评论
为什么被折叠?



