$this->send($client_id, 'Server: ' . $ws['message']); //$this->broadcast($client_id, $ws['message']); } function broadcast($client_id, $msg) { foreach ($this->connections as $clid => $info) { if ($client_id != $clid) { $this->send($clid, $msg); } } } } //require __DIR__'/phar://swoole.phar'; Swoole\Config::$debug = true; Swoole\Error::$echo_html = false; $AppSvr = new WebSocket(); $AppSvr->loadSetting(__DIR__ . "/swoole.ini"); //加载配置文件 $AppSvr->setLogger(new \Swoole\Log\EchoLog(true)); //Logger /** * 如果你没有安装swoole扩展,这里还可选择 * BlockTCP 阻塞的TCP,支持windows平台 * SelectTCP 使用select做事件循环,支持windows平台 * EventTCP 使用libevent,需要安装libevent扩展 */ $enable_ssl = false; $server = Swoole\Network\Server::autoCreate('0.0.0.0', 9443, $enable_ssl); $server->setProtocol($AppSvr); //$server->daemonize(); //作为守护进程 $server->run(array('worker_num' => 1, 'ssl_key_file' => __DIR__ . '/ssl/ssl.key', 'ssl_cert_file' => __DIR__ . '/ssl/ssl.crt'));
$resMsg['list'][] = array('fd' => $clid, 'name' => $info['name'], 'avatar' => $info['avatar']); } $this->send($client_id, json_encode($resMsg)); } elseif ($msg['cmd'] == 'message') { $resMsg = $msg; $resMsg['cmd'] = 'fromMsg'; //表示群发 if ($msg['channal'] == 0) { foreach ($this->connections as $clid => $info) { $this->send($clid, json_encode($resMsg)); } } elseif ($msg['channal'] == 1) { $this->send($msg['to'], json_encode($resMsg)); $this->send($msg['from'], json_encode($resMsg)); } } } /** * 登录时 */ function login() { } } $AppSvr = new WebSocket(); $AppSvr->setLogger(new FileLog('runlog')); //Logger $server = new TcpServer('0.0.0.0', 9501); $server->setProtocol($AppSvr); //$server->daemonize(); //作为守护进程 $server->run(array('worker_num' => 1, 'max_request' => 5000));