この質問にはおそらく答えがありません。でも、がんばろうと思いました。私はすばらしい 1 ページのアプリケーションを書きました。アプリケーションが起動すると、開いているタブがサーバーに「登録」され、「アクティブな」タブとして保存されます。
ユーザー A がワークスペースで XYZ を変更すると、そのワークスペースで任意のユーザーが開いたすべてのタブが、XYZ が変更されたという通知を受け取ります。これにより、クライアントでリロードがトリガーされ、魔法のように更新されます。現時点では、ポーリングでこれを行っています。ただし、すべてが機能する場合は、WS や Socket.io などを使用してさらに高速化できます。
問題: すべてのタブが通知を受け取ります。そもそもそれを扇動したタブでさえ!(その結果、更新済みの画面が更新されます)
どういうわけか、リクエストを行っているタブのタブ ID をサーバーに知らせる必要があります。ユーザーが 5 つのタブを開いている可能性があることに注意してください。ユーザーが XYZ を変更すると、実際にトリガーしたタブを除いて、すべてのタブが通知を受け取る必要があります。
現時点では、すべての Ajax リクエストに対してワークスペース ID を渡しています (ユーザーがログインし、同時に複数のワークスペースにアクセスできる場合があります)。
- 解決策 1:すべてのリクエストにワークスペース IDとタブ ID の両方を追加する
- 解決策 2: すべての要求にタブ ID のみを使用します。アプリは、tabID からワークスペース ID を計算します (どのワークスペースに属しているかを認識します)。
- 解決策 3: ????? (私が見逃しているものはありますか?)
何か案は?