How to determine server disconnection from SignalR client?

前端 未结 6 711
Happy的楠姐
Happy的楠姐 2020-12-28 14:45

The question is how can SignalR JavaScript client detect when connection with server is lost?

Thanks for any reply!

相关标签:
6条回答
  • 2020-12-28 14:52

    A hub has a method disconnect which will allow you to add a callback when disconnection takes place:

    myHub.disconnect(function() {
      alert('Server has disconnected');
    });
    

    If you aren't using hubs then the code for the disconnect method will help you out:

    $(connection).bind("onDisconnect", function (e, data) {
      callback.call(connection);
    });
    

    This shows the syntax for hooking onto the onDisconnect event of the underlying connection.

    0 讨论(0)
  • 2020-12-28 14:55

    The below, worked for me:

    var connection = $.hubConnection('signalrConnectionUrl');
    
    connection.disconnected(function() {
        console.log('Connection disconnected');
    });
    

    I'm using version: 2.1.2

    See the following link for reference: Link

    0 讨论(0)
  • 2020-12-28 15:05

    Starting with SignalR v0.5.1 it works this way:

    $.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!");
        }
    });
    

    For more details check this website:

    http://weblogs.asp.net/davidfowler/archive/2012/06/10/signalr-0-5-1-released.aspx

    0 讨论(0)
  • 2020-12-28 15:05

    This worked for me using "@aspnet/signalr": "^1.0.0" npm package

    const connection = new signalr.HubConnectionBuilder()
        .withUrl('url')
        .configureLogging(signalr.LogLevel.Information)
        .build()
    
    connection.onclose(() => {
       // close logic goes here
    })
    
    0 讨论(0)
  • 2020-12-28 15:09

    If you are using hubs then implement the IDisconnect interface.

    public class ChatHub : Hub, IDisconnect
    {
        public void Disconnect()
        {
            Debug.WriteLine(Context.ConnectionId + " disconnected");
        }
    }
    

    On persistent connections you can override OnDisconnectAsync, (from the SignalR wiki at https://github.com/SignalR/SignalR/wiki/PersistentConnection )

    public class MyEndPoint : PersistentConnection 
    {
        protected override Task OnDisconnectAsync(string clientId) 
        {
            return Connection.Broadcast("Client " + clientId + " disconncted");   
        }
    }
    
    0 讨论(0)
  • 2020-12-28 15:13

    The SignalR 2.0 way of doing this is like so:

    $.connection.hub.disconnected(function () {
        console.log('Connection disconnected')
    });
    

    http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client#connectionlifetime

    0 讨论(0)
提交回复
热议问题