Zarządzaj wieloma kartami (ale tym samym użytkownikiem) w socket.io

Mam problemy z socket.io i nie mam pojęcia, jak go rozwiązać. Mam aplikację z systemem logowania z socket.io do zarządzania interakcjami użytkownika. Mam też tablicę do zarządzania wszystkimi aktywnymi sesjami websocket. Ta tablica przechowuje parę session.id => nazwa użytkownika.

Problemy zaczynają się, gdy użytkownik otwiera nową kartę z tą samą stroną (lub inną stroną, która używa websocket). Powoduje to zduplikowanie wpisu nazwy użytkownika w tablicy.

{id1, username}
{id2, username}

Gdy gniazdo wysyła wiadomość do użytkownika, wysyła tylko pierwszy identyfikator sesji tablicy, więc tylko jedna karta odbiera komunikat.

Próbowałem zmienić identyfikator gniazda nowego połączenia, aby pasowało do drugiego, ale to nie działa.

socket.id = sessionId of the other websocket;

Myślę, że innym rozwiązaniem jest wysłanie wiadomości do wszystkich otwartych sesji, ale myślę, że nie jest to najlepszy sposób na to.

Dzięki.

questionAnswers(4)

yourAnswerToTheQuestion