Example #1
0
 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();
 }