国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

HttpWorker 收到數(shù)據(jù),如何廣播給 WebSocketClient?

ws666

目前用 Workerman 試著寫一個(gè)這樣的應(yīng)用:

[attach]91[/attach]

兩個(gè) Worker 與各自的 client 通信已經(jīng)可以了,但是 HttpWorker 與 WsWorker 如何通信?

5311 1 0
1個(gè)回答

walkor 打賞

如果ws server是gatewayWorker開發(fā)的,可以在http Worker中用GatewayClient向ws的客戶端發(fā)送數(shù)據(jù)
手冊 :http://gatewayworker-doc.workerman.net/advanced/push.html

如果是基于Worker開發(fā)
最直接的方法是在HttpWorker中模擬客戶端以websocket協(xié)議與Ws Worker通訊,websocket客戶端在workerman群共享中有,或者在github上找一個(gè)

如果Ws Worker 是單進(jìn)程的,也可以增加一個(gè)Text協(xié)議端口的監(jiān)聽,然后httpWorker以Text協(xié)議發(fā)送數(shù)據(jù)到Ws Worker
增加一個(gè)協(xié)議端口監(jiān)聽類似下面代碼

$ws_worker = new Worker('Websocket://0.0.0.0:8080');
$ws_worker->onWorkerStart = function($ws_worker)
{
    // 增加一個(gè)Text協(xié)議端口的監(jiān)聽
    $text_worker = new Worker('Text://0.0.0.0:9090');
    $text_worker->onMessage = function($connection, $data)
    {
        // 這里處理Http Worker 上發(fā)來的數(shù)據(jù) $data
        // 省略....
    };
    // 給ws_worker添加一個(gè)屬性保存text_worker
    $ws_worker->textWorker = $text_worker;
    // 執(zhí)行監(jiān)聽
    $text_worker->listen();
};

Http Worker 中可以這樣用Text協(xié)議與Ws Worker通訊

$client = stream_socket_client("tcp://$ip:9090");
// text 協(xié)議為字符串末尾加一個(gè)換行符 \n
fwrite($client, $data."\n");

還有其它方法,比如單獨(dú)建立一個(gè)中轉(zhuǎn)Worker進(jìn)程,Http Worker 與 Ws Worker在onWorkerStart時(shí)與這個(gè)中轉(zhuǎn)Worker建立連接,然后二者就可以通過這個(gè)中轉(zhuǎn)Worker通訊了

  • 暫無評(píng)論
年代過于久遠(yuǎn),無法發(fā)表回答
??