// +---------------------------------------------------------------------- namespace addon\wxchat\command; use GatewayWorker\Gateway; use think\console\Command; use think\console\Input; use think\console\input\Option; use think\console\Output; use Workerman\Worker; use \GatewayWorker\BusinessWorker; use \GatewayWorker\Register; // php think wxchat:server -a start /** * ChatServer 类 * * @author ywxapp */ class ChatServer extends Command { protected function configure() { $this->setName('wxchat:server')->addOption('action', 'a', Option::VALUE_OPTIONAL, '操作')->setDescription('Start wxchat GatewayWorker Server'); } protected function execute(Input $input, Output $output) { // 初始化 GatewayWorker $this->initGatewayWorker(); Worker::runAll(); } private function initGatewayWorker() { // register 必须是text协议,切记不能将register端口开放给外网 $register = new Register('text://127.0.0.1:1238'); // bussinessWorker 进程 $worker = new BusinessWorker(); // worker名称 $worker->name = 'YourAppBusinessWorker'; // bussinessWorker进程数量 $worker->count = 4; // 服务注册地址 $worker->registerAddress = '127.0.0.1:1238'; $worker->eventHandler = \addon\wxchat\worker\ChatEvent::class; $context = [ 'ssl' => [ 'local_cert' => __DIR__ . '/fullchain.pem', // 也可以是crt文件 'local_pk' => __DIR__ . '/privkey.pem', 'verify_peer' => false, 'allow_self_signed' => true, //如果是自签名证书需要开启此选项 ], ]; $gateway = new Gateway("websocket://0.0.0.0:2346", $context); $gateway->name = 'AppGateway'; $gateway->count = 2; $gateway->lanIp = '127.0.0.1'; $gateway->startPort = 2900; $gateway->websocketCompression = false; // ⚠️ 必须关闭! $gateway->maxPackageSize = 10 * 1024 * 1024; // 10MB(支持大Base64) $gateway->registerAddress = '127.0.0.1:1238'; //$gateway->onWorkerStart //$gateway->onWorkerStop //$gateway->onConnect //$gateway->onMessage //$gateway->onClose $gateway->transport = 'ssl'; // 心跳间隔 //$gateway->pingInterval = 0; // 心跳数据 //$gateway->pingData = '{"type":"ping"}'; } }