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

自定義的通訊協(xié)議 是如何進(jìn)行連接的呢

weywey

像websocket協(xié)議,我能理解。

前端 new WebSocket后,輸入對應(yīng)的ws服務(wù)的地址就可以實現(xiàn)連接,但是如果是tcp協(xié)議或者新定義的一個協(xié)議,又該怎么去實現(xiàn)客戶端與服務(wù)端的連接與數(shù)據(jù)傳輸呢

923 2 2
2個回答

walkor 打賞

瀏覽器不支持自定義協(xié)議,一般只能用http websocket協(xié)議

  • weywey 2024-04-06

    謝謝大佬 ,像咱們框架內(nèi)自帶的 frame、text協(xié)議或者自定義的 JSONL ,客戶端是怎么連接上的呢

  • walkor 2024-04-06

    php里用stream_socket_client,文檔有示例

  • weywey 2024-04-06

    好 謝謝

  • weywey 2024-04-07

    還有一個問題 大佬 我的tcp客戶端是網(wǎng)絡(luò)控制器,tcp客戶端有自身的心跳機制,心跳內(nèi)容固定是 ¥YJ58BF25D6E65D$ ,在我獲取這個數(shù)據(jù)時 我原本應(yīng)該直接回復(fù)這個數(shù)據(jù),所以在onmessage 時 我給了一個一個if($message=="¥YJ58BF25D6E65D$"){
    Gateway::sendToClient($client_id, $message);
    }

    然而我發(fā)現(xiàn)設(shè)備總是斷開 ,結(jié)果打印了一下 $message,結(jié)果是 ?YJ58BF25D6E65D$ ,所以導(dǎo)致一直沒有回復(fù)心跳,這是啥原因?qū)е碌霓D(zhuǎn)義呢

  • walkor 2024-04-08

    workerman不會隨意更改數(shù)據(jù),說明客戶端發(fā)的數(shù)據(jù)就是 ?YJ58BF25D6E65D$,?可能是協(xié)議頭,具體你要看他們協(xié)議文檔

xiaopi

其實自定義協(xié)議就是TCP協(xié)議,只不過TCP發(fā)送沒有邊界,可能幾次發(fā)送合并到一起發(fā)過來,或者大段內(nèi)容拆分成多次發(fā)過來,這樣就需要開發(fā)者自己合包或者拆包,比較麻煩,解決方法有一種就是發(fā)送方和接收方約定好使用固定結(jié)束標(biāo)識符,用來告訴接收方,我還沒發(fā)送完成,你等我發(fā)送完,直到看到約定的結(jié)束符或者我發(fā)的包含了多次,你需要根據(jù)結(jié)束符拆分成多個包使用。而workerman自定義協(xié)議就是約定好了結(jié)束符,自動處理了分包合包的問題,就不會出現(xiàn)TCP邊界問題了,當(dāng)然客戶端使用時,也需要使用自定義協(xié)議中規(guī)定的結(jié)束符

年代過于久遠(yuǎn),無法發(fā)表回答
??