#!/usr/bin/env php loop; echo "[初始化] 获取事件循环成功\n"; $gameServer->setLoop($loop); echo "[初始化] 为 GameProcessServer 设置了事件循环\n"; echo <<<'ASCII' ╔══════════════════════════════════════════╗ ║ 凡人修仙传 - 进程转发 WebSocket 服务器 ║ ╚══════════════════════════════════════════╝ ⚡ WebSocket 服务器启动 📍 地址: 0.0.0.0:9002 🔗 客户端连接: ws://localhost:9002 📋 运作原理: 1. 为每个WebSocket连接启动一个 php bin/game 进程 2. 实时读取进程的STDOUT/STDERR 3. 通过WebSocket发送给客户端 4. 客户端输入直接写入进程的STDIN 💡 特点: ✓ 无需修改游戏代码 ✓ 每个用户独立的游戏进程 ✓ 实时输出(100ms轮询) ✓ 完整的ANSI颜色支持 ✓ 实时交互 按 Ctrl+C 停止服务器... ASCII; ob_implicit_flush(); fflush(STDOUT); echo "\n[启动] 准备启动事件循环...\n"; fflush(STDOUT); try { echo "[启动] 调用 \$loop->run()...\n"; fflush(STDOUT); $loop->run(); echo "[启动] \$loop->run() 已返回\n"; } catch (Exception $e) { echo "\n[错误] 事件循环异常: " . $e->getMessage() . "\n"; echo $e->getTraceAsString() . "\n"; exit(1); }