name = 'ChatWebSocket'; // 设置进程数 $ws_worker->count = 4; // 设置心跳(60秒无响应则断开) $ws_worker->pingInterval = 60; $ws_worker->pingNotResponseLimit = 1; // 当进程启动时 $ws_worker->onWorkerStart = function($worker) { echo "[Worker #{$worker->id}] started\n"; // 初始化 ChatService $chatService = new \app\services\workerman\chat\ChatService($worker); $worker->chatService = $chatService; }; // 当客户端连接时 $ws_worker->onConnect = function(TcpConnection $connection) { $addr = $connection->getRemoteAddress(); echo "[Connect] {$addr}\n"; }; // 当收到客户端消息时 $ws_worker->onMessage = function(TcpConnection $connection, $data) use (&$chatService) { $chatService->onMessage($connection, $data); }; // 当客户端断开连接时 $ws_worker->onClose = function(TcpConnection $connection) use (&$chatService) { $chatService->onClose($connection); }; // 当连接出错时 $ws_worker->onError = function(TcpConnection $connection, $code, $msg) { echo "[Error] {$code}: {$msg}\n"; }; // 输出启动信息 echo "\n"; echo "========================================\n"; echo " Chat WebSocket Server\n"; echo " Address: ws://0.0.0.0:2345\n"; echo " PID: " . getmypid() . "\n"; echo "========================================\n\n"; // 运行 Worker::runAll();