10

各タブに一意の ID が割り当てられた複数のタブが開いている場合、SignalR を使用することはできません (「SignalR が一度に 8 ~ 10 の接続を行った場合、ライブ チャットが機能しない」を参照)。

しかし。このスタックオーバーフローの問題で説明した回避策があります。アイデアは、開いているすべてのタブが同じ接続 ID を持つように、順番に接続 ID を上書きすることです。したがって、論理的には、私の特定のケースでは、各タブに一意の ID を持つ理由はありません。 .

いずれにせよ、stackoverflow ( SignalR How is a duplicate Connection Id handler? を参照) で認識されているように、connectionid は一意でなければなりません。そして彼らは、IConnectionIdGenerator は次のリリースで削除されると言っています。

だから、これは一種の袋小路です。一意の ID を使用する必要がありますが、複数のブラウザー タブを開いた状態で SignalR を使用することはできません。

ありがとうございました。ドミトリー。

4

3 に答える 3

12

ここで開いた SignalR の問題で説明されているように、最新のブラウザーのほとんどは、同じサイトへの同時接続の最大数 (通常は約 6) を制限しています。

1 つの回避策は、サブドメインを使用することです。つまり、各タブは異なるサブドメインに接続します (これは Facebook が使用しているアプローチです)。localStorage別のオプションは、この質問で FreshCode によって提案されているように、1 つの接続のみを開始し、タブ間のメッセージ バスとして使用することです: SignalR and Browser Connection limit

于 2012-10-23T19:02:58.577 に答える
1

ブラウザーの制限を回避するには、「localStorage」を使用してウィンドウ間で通信し、1 つのウィンドウのみを接続所有者として持つことができます。この場合の他のウィンドウは、接続所有者を使用してメッセージを送受信します。IWC-SignalRは、そのようなアプローチの実装です。

于 2015-05-07T11:34:50.767 に答える