SignalRはコネクションベースのクライアント/サーバソリューションであるため、長い持続的なオープン接続を期待することはできません。だから、Kelso Sharpが答えて書いたように、あなたができる唯一の良いことは接続ライフサイクルの出来事を管理することだけです。
signalR接続のすべてのライフサイクルイベントのドキュメントをチェックアウト: https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#connectionlifetime
をだから私たちが失敗したことはありません永続的な接続を行う方法についての私達の注意を集中していない場合、我々は代わりに与えるに焦点を当てることができバックグラウンドで切断やリロードなどを巧みに管理することによって、ユーザーにその印象を与えることができます。
ハブをクライアントにプッシュする原因を指定していないにもかかわらず、これを設定する方法を示す図ですが、この図のようなイメージングが可能です。ここでは、同じ状態を何らかの状態プロバイダ(キャッシュ、Web APIストレージなど)にプッシュすることで、任意の時点ですべてのデータを利用できるようにするという考え方です。 uiがロードまたは切断すると、このプロバイダに状態を取り戻す要求が発行され、ハブに再接続する必要があります。
データの一貫性が問題の場合は、状態のバージョニングを行い、uiにローカルコピーを保存してから、再接続時に監査を実行できます。そうすれば、あなたが何かを逃したかどうかを知ることができます。その場合、州の提供者に追いつきのリクエストを出します。
あなたは自分のクライアント側の一部の機能ではフック持つイベント処理するには: //これは、接続サイクル中に全ての状態変化をトリガしますが:
$.connection.hub.stateChanged(function (change) {
if (change.newState === $.signalR.connectionState.reconnecting) {
console.log("liveFeed is reconnecting!");
}
else if (change.newState === $.signalR.connectionState.connected) {
console.log("liveFeed is connected!");
}
});
//これをハブとの接続が切断されたときにトリガーします。セッションを行う方法を考え出した
$.connection.hub.disconnected(function() {
console.log('Connection disconnected')
});
この質問は意見に基づいており、スタックオーバーフローのトピックではありません。 –
エラー処理の方法でAPIを呼び出すのは、意見に基づく質問ですか? – Cine
* SignalRに接続する正しいJavaScriptパターンは何ですか?* SignalR(ハブ、永続接続など)に接続するための単一の「正しい」パターンがないため、「最も正しい" –