問題は、サーバーとの接続が失われたときにSignalR JavaScriptクライアントがどのように検出できるかです。
返信ありがとう!
ハブにはメソッドdisconnect
があり、切断が発生したときにコールバックを追加できます。
myHub.disconnect(function() {
alert('Server has disconnected');
});
ハブを使用していない場合は、disconnectメソッドのコードが役立ちます。
$(connection).bind("onDisconnect", function (e, data) {
callback.call(connection);
});
これは、基になる接続のonDisconnectイベントにフックするための構文を示しています。
ハブを使用している場合は、IDisconnectインターフェイスを実装します。
public class ChatHub : Hub, IDisconnect
{
public void Disconnect()
{
Debug.WriteLine(Context.ConnectionId + " disconnected");
}
}
永続的な接続では、OnDisconnectAsyncをオーバーライドできます(SignalR wiki https://github.com/SignalR/SignalR/wiki/PersistentConnection から)
public class MyEndPoint : PersistentConnection
{
protected override Task OnDisconnectAsync(string clientId)
{
return Connection.Broadcast("Client " + clientId + " disconncted");
}
}
これは"@aspnet/signalr": "^1.0.0"
npmパッケージ
const connection = new signalr.HubConnectionBuilder()
.withUrl('url')
.configureLogging(signalr.LogLevel.Information)
.build()
connection.onclose(() => {
// close logic goes here
})
SignalR v0.5.1以降、次のように機能します。
$.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!");
}
});
詳細については、このWebサイトを確認してください。
http://weblogs.asp.net/davidfowler/archive/2012/06/10/signalr-0-5-1-released.aspx
これを行うためのSignalR 2.0の方法は次のとおりです。
$.connection.hub.disconnected(function () {
console.log('Connection disconnected')
});
以下は、私のために働きました:
var connection = $.hubConnection('signalrConnectionUrl');
connection.disconnected(function() {
console.log('Connection disconnected');
});
次のバージョンを使用しています:2.1.2
参考のために次のリンクを参照してください: Link