ページ ナビゲーションが発生する直前に Socket.io がメッセージを受信するという問題があります。通常、メッセージがナビゲーションによってトリガーされたサーバー側のアクションの直接の結果である場合です。
私が今見ているものは次のようになります:
- Socket.io 接続
- ユーザーがページ ナビゲーションをトリガーします (フォームの送信、更新など)。
- サーバー側のロジックが socket.io サーバーにリクエストを送信すると、まだ接続されているクライアントにイベントがすぐにディスパッチされます。
- クライアントはリクエストを受信して確認し (socket.io に組み込まれたメッセージの確認があると確信しています。間違っている場合は修正してください)、ユーザーに通知を表示しますが、その後 ...
- 元のページで socket.io 接続が閉じます
- 新しいページがロードされて表示されます
- Socket.io は新しい接続を開きますが、最後のメッセージが受信されて確認されたため、新しいメッセージはありません。
ナビゲーションが発生する前に Socket.io が接続を閉じることを期待するのは合理的ではないと思うので、これ自体は実際にはバグではありません。ただし、これを処理する最善の方法が何であるかはよくわかりません。現在、クライアントごとに一度に 1 つの接続を開いたままにし、新しい接続が接続されるともう 1 つの接続を閉じます。ただし、この場合は発生しません。これは、2 番目の接続が接続される前に最初の接続が閉じられているためです。すべてのクライアントのリストを保持することもできますが、それでも最初の接続でメッセージが受信されるため、この問題は解決しません。
ユーザーがメッセージの通知を常に確認できるようにする、この問題の解決策を誰かが提案できますか?