5

バックエンド サーバーへの接続がランダムに出入りする可能性がある低帯域幅環境で SignalR を使用しようとしており、Web アプリケーションが適切に応答することを望んでいます。

この接続 API はこの 1 年間で流動的だったようですが、最新のドキュメントに従って、$.connection.hub.stateChanged に接続して接続状態の変化を検出しようとしたところ、いくつかのヒットが得られました。起動時に、クライアントが切断 -> 接続 -> 接続されたときに、サーバーを停止するとイベント ハンドラーが起動せず、サーバーを再起動すると、リアルタイム メッセージングが機能しなくなります。

このシナリオをテストするために、IIS で ASP.NET Web サーバーを実行している Windows 7 で、Web クライアントを Google Chrome で実行しています。サイトが実行され、メッセージが交換されたら、IIS で Web サイトを強制終了します。メッセージは停止しますが、クライアントは通知を受け取りません。

ここに簡単なスニペットがあります (TypeScript を使用):

$.connection.hub.stateChanged((change) => {
   console.log("state changed...");
   console.log(change);

   if (change.newState === $.signalR.connectionState.reconnecting) {
      this.raise('action:disconnected');
   }
   else if (change.newState === $.signalR.connectionState.connected) {
      this.raise('action:connected');
   }
});

どんなガイダンスでも大歓迎です、ありがとう!

-ジェレミー

4

1 に答える 1

5

どのバージョンの SignalR を使用していますか? 最新(およびそれ以前のもの)では、サーバーがオフラインになるとすぐに検出され、状態の変化が再接続フラグで発生します。

サーバーを強制終了するには、IIS .eg iisreset をシャットダウンすることを意味していると思います。inetmgr で Web サイトを停止しても、サイトはシャットダウンされませ。そのポートの Http.sys バインドが削除されるだけです。詳細については、 https://github.com/SignalR/SignalR/issues/1148を参照してください。

サーバーのダウンをシミュレートする場合は、w3wp を終了します。

于 2013-01-26T19:16:33.647 に答える