public function start($dryRun = false) { $port = $this->choosePort(); $this->sendCommand('status', $port, $error); // @codeCoverageIgnoreStart if (!$error) { $this->cliOutput('error', 'Service already started'); return false; } // @codeCoverageIgnoreEnd $this->prepareServiceAwareComponents(); $this->debug and $this->prepareDebugObservers(); if (!$dryRun) { $this->initSwoole(); $this->swoole->start(); } return true; }
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(); }
<?php use Swoole\Server; $serv = new Server("127.0.0.1", 9501); $serv->on('receive', function (Server $serv, $fd, $from_id, $data) { echo "[#" . $serv->worker_id . "]\tClient[{$fd}]: {$data}\n"; if ($serv->send($fd, "hello\n") == false) { echo "error\n"; } }); $serv->start();