2012-05-23 12 views
5

otwarto także to jako problem here jednak nadzieję, że ktoś widział ten ..SignalR podłączyć/odłączyć koncentrator wysadza

Mam bardzo prosty koncentrator, który implementuje IConnected/IDisconnect. W samodzielnym projekcie ten hub testował się znakomicie.

Kiedy wrzuciłem go do mojego prawdziwego projektu, gdzie już mam kilka innych hubów, dodanie go nie doprowadziło do dostępności żadnych koncentratorów (potwierdził, że żaden nie pojawia się w/signalr/hubs). Następnie skomentowałem IConnected/IDisconnect w tym centrum i ponownie skompilowałem, i pojawił się wraz z resztą. Dodanie interfejsów z powrotem złamało to wszystko.

Czy ktoś to widział wcześniej? Czy brakuje jakiejś konfiguracji?

public class ChatHub : Hub, IConnected, IDisconnect 
{ 
    public void Test(string message) 
    { 

    } 

    public System.Threading.Tasks.Task Connect(IEnumerable<string> groups) 
    { 
     this.Clients.onNewUserOnline(Context.ConnectionId); 
     return new Task(() => { }); 
    } 


    public Task Reconnect(IEnumerable<string> groups) 
    { 
     this.Clients.onNewUserOnline(Context.ConnectionId); 
     return new Task(() => { }); 
    } 

    public Task Disconnect() 
    { 
     this.Clients.onUserOffline(Context.ConnectionId); 
     return new Task(() => { }); 
    } 
} 

Odpowiedz

7

Tu jest link do podobnego pytania Is there a way to get number of connections in Signalr hub group?

Jeśli to zrobił pomoc można spojrzeć na nowy stan rzeczy Connection w SignalR 0.5.1

Connection State Zmiany

Połączenie SignalR zawsze stanowiło czarną skrzynkę dla użytkownika, przez co trudno było wykryć zmiany w podstawowym stanie połączenia. Ujawniliśmy nowe zdarzenie stateChanged w klientach JavaScript i .NET. Pozwala to na wsłuchiwanie się w zmiany stanu i reagowanie na nie na różne sposoby. Oto przykład pokazujący użytkownikowi komunikat, jeśli połączenie przeszło w stan ponownego połączenia i nie powróciło po 10 sekundach:

var chat = $.connection.chat; 
var timeout = null; 
var interval = 10000; 
chat.addMessage = function (msg) { 
    $('#messages').append('<li>' + msg + '</li>'); 
}; 
$.connection.hub.stateChanged(function (change) { 
    if (change.newState === $.signalR.connectionState.reconnecting) { 
     timeout = setTimeout(function() { 
      $('#state').css('backgroundColor', 'red') 
       .html('The server is unreachable...'); 
     }, interval); 
    } else if (timeout && change.newState === $.signalR.connectionState.connected) { 
     $('#state').css('backgroundColor', 'green') 
      .html('The server is online'); 
     clearTimeout(timeout); 
     timeout = null; 
    } 
}); 
$.connection.hub.start();