argument('action'); $argv[0] = 'wk'; $argv[1] = $action; $argv[2] = $this->option('d') ? '-d' : ''; $this->start(); } private function start() { $this->startGateWay(); $this->startBusinessWorker(); $this->startRegister(); Worker::runAll(); } private function startBusinessWorker() { $worker = new BusinessWorker(); //work名称 $worker->name = 'BusinessWorker'; //businessWork进程数 $worker->count = 2; //服务注册地址 $worker->registerAddress = '127.0.0.1:1236'; //设置\App\Workerman\Events类来处理业务 $worker->eventHandler = \App\DataApi\Helper\WorkmanServerHelper::class; } private function startGateWay() { //gateway进程 $context = [ 'ssl' => [ 'local_cert' => public_path().'/saler_ssl_key/fullchain.pem', // 你的SSL证书路径 'local_pk' => public_path().'/saler_ssl_key/privkey.key', // 你的SSL证书私钥路径 'verify_peer' => false, // 禁用对等验证 'verify_peer_name' => false, // 禁用对等验证 'allow_self_signed' => true // 允许自签名证书 ] ]; $gateway = new Gateway("websocket://0.0.0.0:2346",$context); // 开启SSL,websocket+SSL 即wss $gateway->transport = 'ssl'; //gateway名称 status方便查看 $gateway->name = 'Gateway'; //gateway进程 $gateway->count = 2; //本机ip $gateway->lanIp = '127.0.0.1'; //内部通讯起始端口,如果$gateway->count = 4 起始端口为2300 //则一般会使用 2300,2301 2个端口作为内部通讯端口 $gateway->startPort = 2300; //心跳间隔 $gateway->pingInterval = 30; //客户端连续$pingNotResponseLimit次$pingInterval时间内不发送任何数据则断开链接,并触发onClose。 //我们这里使用的是服务端主动发送心跳所以设置为0 $gateway->pingNotResponseLimit = 0; //心跳数据 $gateway->pingData = '{"type":"@heart@"}'; //服务注册地址 $gateway->registerAddress = '127.0.0.1:1236'; } private function startRegister() { new Register('text://0.0.0.0:1236'); } }