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

onMessage中sendToGroup消息重復(fù)的問題

Dobeen

Events.php 中:

    public static function onMessage($client_id, $message)
    {
        $message = json_decode($message, true);
        Gateway::sendToGroup($message['group_id'], json_encode([
            'type' => 'test',
            'group' => Gateway::getClientSessionsByGroup($message['group_id'])
        ]));
    }

客戶端進(jìn)入后主動向服務(wù)端發(fā)送一次消息:

ws.send('{"type":"ready", "group_id": "{{ $race->id }}"}');

然后客戶端的監(jiān)聽:

ws.onmessage = function(e){
    var data = eval("("+e.data+")");
    var type = data.type || '';
    console.log(data);
}

問題癥狀:

第一個用戶進(jìn)入,發(fā)送ready,服務(wù)端響應(yīng)信息,客戶端監(jiān)聽,收到服務(wù)端響應(yīng)的 1 條消息;
第二個用戶進(jìn)入,發(fā)送ready,服務(wù)端響應(yīng)信息,客戶端監(jiān)聽,收到服務(wù)端響應(yīng)的 2 條消息;
第三個用戶進(jìn)入,發(fā)送ready,服務(wù)端響應(yīng)信息,客戶端監(jiān)聽,收到服務(wù)端響應(yīng)的 3 條消息;
...
第N個用戶進(jìn)入,發(fā)送ready,服務(wù)端響應(yīng)信息,客戶端監(jiān)聽,收到服務(wù)端響應(yīng)的 N 條消息;

正常需求:

不管幾個客戶端加入group,服務(wù)端sendToGroup后,每個客戶端只收一次服務(wù)端消息。

不知道哪里出問題了,請大神指點(diǎn)。

1325 2 0
2個回答

walkor 打賞

看下是不是一個頁面建立了多個websocket連接

  • Dobeen 2022-01-16

    ws = new WebSocket("ws://race.test:2346");
    ws.onmessage = function(e){
    ......
    }

    確認(rèn)只建立了一條連接

  • walkor 2022-01-16

    截圖下完整的測試過程吧

Dobeen

截圖的是客戶端一,是當(dāng)?shù)诙€客戶端加入后,服務(wù)端通知joined,然后客戶端二向服務(wù)端發(fā)送一條消息后,客戶端一的截圖。

  • walkor 2022-01-16

    感覺你的業(yè)務(wù)代碼沒發(fā)完整,發(fā)下完整的服務(wù)端代碼和客戶端代碼。

  • six 2022-01-17

    截圖的是客戶端一,是當(dāng)?shù)诙€客戶端加入后,服務(wù)端通知joined,然后客戶端二向服務(wù)端發(fā)送一條消息后

    他這個應(yīng)該是服務(wù)端通知joined這步通知給了所有的客戶端,然后所有的客戶端向服務(wù)端發(fā)送了一條消息,然后單個客戶端就收到N條消息了。所以他的業(yè)務(wù)邏輯可能有問題。

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