protected function startWorkerServer($config = null) { switch (self::$serverType) { case 3: case 2: # 主端口同时支持 WebSocket 和 Http 协议 $className = '\\Swoole\\WebSocket\\Server'; break; case 1: # 主端口仅 Http 协议 $className = '\\Swoole\\Http\\Server'; break; case 0: default: # 主端口为自定义端口 $className = '\\Swoole\\Server'; break; } # 创建一个服务 self::$server = new $className(self::$config['server']['host'], self::$config['server']['port'], self::$serverMode, self::$config['server']['sock_type']); # 设置配置 self::$server->set($config ?: self::$config['swoole']); $this->bind(); if (self::$config['sockets']) { $this->initSockets(); } if (self::$clustersType > 0) { if (self::$config['clusters']['register']['is_register']) { # 启动注册服务器 $worker = new Register\WorkerMain(self::$server); $worker->name = 'RegisterServer'; $worker->listen(self::$config['clusters']['register']['ip'], self::$config['clusters']['register']['port']); # 放在Worker对象里 self::$workers['RegisterServer'] = $worker; } } self::$server->start(); }