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();
}