La question est de savoir comment le client JavaScript de SignalR peut-il détecter le moment où la connexion avec le serveur est perdue?
Merci pour toute réponse!
Un hub a une méthode disconnect
qui vous permettra d'ajouter un rappel lorsque la déconnexion a lieu:
myHub.disconnect(function() {
alert('Server has disconnected');
});
Si vous n'utilisez pas de hubs, le code de la méthode de déconnexion vous aidera:
$(connection).bind("onDisconnect", function (e, data) {
callback.call(connection);
});
Cela montre la syntaxe à suivre pour se connecter à l'événement onDisconnect de la connexion sous-jacente.
Si vous utilisez des concentrateurs, implémentez l'interface IDisconnect.
public class ChatHub : Hub, IDisconnect
{
public void Disconnect()
{
Debug.WriteLine(Context.ConnectionId + " disconnected");
}
}
Sur les connexions persistantes, vous pouvez remplacer OnDisconnectAsync, (À partir du wiki de SignalR à https://github.com/SignalR/SignalR/wiki/PersistentConnection ).
public class MyEndPoint : PersistentConnection
{
protected override Task OnDisconnectAsync(string clientId)
{
return Connection.Broadcast("Client " + clientId + " disconncted");
}
}
La façon de faire de SignalR 2.0 est la suivante:
$.connection.hub.disconnected(function () {
console.log('Connection disconnected')
});
À partir de SignalR v0.5.1, cela fonctionne comme suit:
$.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!");
}
});
Pour plus de détails, visitez ce site:
http://weblogs.asp.net/davidfowler/archive/2012/06/10/10/signalr-0-5-1-released.aspx
Le ci-dessous, a travaillé pour moi:
var connection = $.hubConnection('signalrConnectionUrl');
connection.disconnected(function() {
console.log('Connection disconnected');
});
J'utilise la version 2.1.2
Voir le lien suivant pour référence: Link
Cela a fonctionné pour moi avec le paquet "@aspnet/signalr": "^1.0.0"
npm
const connection = new signalr.HubConnectionBuilder()
.withUrl('url')
.configureLogging(signalr.LogLevel.Information)
.build()
connection.onclose(() => {
// close logic goes here
})