亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 ReactPHP 和 Ratchet 在同一端口上運行 WebSocket

如何使用 ReactPHP 和 Ratchet 在同一端口上運行 WebSocket

PHP
泛舟湖上清波郎朗 2022-07-09 09:40:06
我有以下代碼:use Ratchet\Http\HttpServer;use Ratchet\WebSocket\WsServer;$loop = \React\EventLoop\Factory::create();$socketServer = new \React\Socket\Server('127.0.0.1:8080', $loop);$httpServer = new \React\Http\Server(function(\Psr\Http\Message\ServerRequestInterface $request) {  return new \React\Http\Response(200, [      'Content-Type' => 'text/plain'    ],    'Hello, World'  );});$httpServer->listen($socketServer);$rrServer = new RRServer(); // Implements MessageComponentInterface$webSocketServer = new IoServer(  new HttpServer(    new WsServer(      $rrServer    )  ),  $socketServer,  $loop);$webSocketServer->run();該代碼有效,但我只能使用http://localhost:8080訪問它,當我嘗試使用 WebSocket 連接時,連接打開,然后立即關閉。另外,當我創建一個具有不同端口的新套接字時,我可以同時使用 http:// 和 ws://我的代碼有什么問題?如何在同一個端口上運行 WebSocket 和 HTTP Server?
查看完整描述

2 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

嘿 ReactPHP 核心團隊成員。簡而言之,您可以在一個端口上使用so_reuseport套接字服務器上的兩個服務器進行偵聽,但這只是與其中任何一個的循環連接。你可以做的是嘗試 cboden 的建議,我在這里做了,如果你有任何問題,請告訴我們:https ://github.com/ratchetphp/Ratchet/issues/771#issuecomment-569439423

即:


查看完整回答
反對 回復 2022-07-09
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

實際上你不能在同一個端口上運行多個 websocket。但您可以將所有 websocket 合二為一。并用這樣的 url 查詢將它們分開。


http://localhost:8080?source=socket_1

http://localhost:8080?source=socket_2

并且在您的代碼中可以通過以下方式獲取請求來源:


function onOpen( ConnectionInterface $conn ) {

    $querystring = $conn->WebSocket->request->getQuery()->toArray();

    if($querystring['source'] == 'socket_1'){

        // run socket 1 jobs

    else{

        // do socket 2

    }

    // and change

}

我沒有這樣做,我沒有測試它。所以 ... :)


查看完整回答
反對 回復 2022-07-09
  • 2 回答
  • 0 關注
  • 172 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號