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

text協議怎么解決粘包問題?。?

pfl18328314852

截圖
服務器幾乎分別同時向同一個客戶端發(fā)送兩條數據,有時候客戶端得到的數據包是正常的(上面這個就是正常的)。有時候會把兩條合并成一條數據發(fā)過來。導致json格式解析錯誤。我用的text協議。這個粘包問題我搜過其它帖子說的text協議自己已經處理了粘包,但是我發(fā)現我這邊還是有這個問題,是哪里沒有設置對嗎?下面這個就是有時候會粘包的情況,兩條合成一條了。
截圖

3339 2 0
2個回答

walkor 打賞

應該是業(yè)務邏輯的問題。
比如服務端send的數據就是把2個數據合并在一起發(fā)送了。

  • pfl18328314852 2020-03-23

    // 向所有人發(fā)送
    $data['client_list']=$client_list;
    Gateway::sendToAll(json_encode($data)."\n");
    // 向當前client_id發(fā)送數據
    Gateway::sendToClient($client_id, "當前用戶:$client_id said $message"."\n");
    就是先后發(fā)送兩條數據。本身是不允許這樣做嗎?只能發(fā)送一條數據是不?

  • walkor 2020-03-23

    這樣可以,前提是gatway使用了協議,如果是text協議,gatewayWorker里發(fā)送數據不需要手動加"\n"。另外js無法直接使用text協議。所以我不清楚你到底什么情況。

  • pfl18328314852 2020-03-23

    我用的node,可以使用text協議。我在當客戶端發(fā)來消息時觸發(fā)onMessage里面,向客戶端發(fā)送消息Gateway::sendToAll()和Gateway::sendToClient()。客戶端收到消息就會出現有時候粘包的現象,有時候又是正常的

  • walkor 2020-03-23

    因為node沒有根據協議來分包導致的。node收到消息后根據換行符"\n"來分下包就好了。也就是說,你的node應該就是一個裸tcp,沒有使用任何協議,沒有做分包。

  • pfl18328314852 2020-03-24

    好的,明白了,謝謝了

xiasha11

客戶端你做下分包處理啊

  • pfl18328314852 2020-03-24

    恩,我以為text協議客戶端接收到的已經是分包處理了的,不需要客戶端自行處理,現在明白了,還是需要處理

  • 八千年丶 2021-07-23

    需要約定 分包處理。

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