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

text協(xié)議怎么解決粘包問(wèn)題?。?

pfl18328314852

截圖
服務(wù)器幾乎分別同時(shí)向同一個(gè)客戶端發(fā)送兩條數(shù)據(jù),有時(shí)候客戶端得到的數(shù)據(jù)包是正常的(上面這個(gè)就是正常的)。有時(shí)候會(huì)把兩條合并成一條數(shù)據(jù)發(fā)過(guò)來(lái)。導(dǎo)致json格式解析錯(cuò)誤。我用的text協(xié)議。這個(gè)粘包問(wèn)題我搜過(guò)其它帖子說(shuō)的text協(xié)議自己已經(jīng)處理了粘包,但是我發(fā)現(xiàn)我這邊還是有這個(gè)問(wèn)題,是哪里沒(méi)有設(shè)置對(duì)嗎?下面這個(gè)就是有時(shí)候會(huì)粘包的情況,兩條合成一條了。
截圖

3336 2 0
2個(gè)回答

walkor 打賞

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

  • pfl18328314852 2020-03-23

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

  • walkor 2020-03-23

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

  • pfl18328314852 2020-03-23

    我用的node,可以使用text協(xié)議。我在當(dāng)客戶端發(fā)來(lái)消息時(shí)觸發(fā)onMessage里面,向客戶端發(fā)送消息Gateway::sendToAll()和Gateway::sendToClient()??蛻舳耸盏较⒕蜁?huì)出現(xiàn)有時(shí)候粘包的現(xiàn)象,有時(shí)候又是正常的

  • walkor 2020-03-23

    因?yàn)閚ode沒(méi)有根據(jù)協(xié)議來(lái)分包導(dǎo)致的。node收到消息后根據(jù)換行符"\n"來(lái)分下包就好了。也就是說(shuō),你的node應(yīng)該就是一個(gè)裸tcp,沒(méi)有使用任何協(xié)議,沒(méi)有做分包。

  • pfl18328314852 2020-03-24

    好的,明白了,謝謝了

xiasha11

客戶端你做下分包處理啊

  • pfl18328314852 2020-03-24

    恩,我以為text協(xié)議客戶端接收到的已經(jīng)是分包處理了的,不需要客戶端自行處理,現(xiàn)在明白了,還是需要處理

  • 八千年丶 2021-07-23

    需要約定 分包處理。

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