2012-05-23 17 views
5

también abrió esto como un problema here pero esperando que alguien ha visto este ..SignalR conectar/desconexión de los cubos explota

Tengo un centro muy simple que implementa IConnected/IDisconnect. En un proyecto independiente, este hub probó genial.

Cuando lo dejé en mi proyecto real, donde ya tengo otros hubs, agregué que no había hubs disponibles (confirmó que ninguno aparece en/signalr/hubs). Luego comenté IConnected/IDisconnect en este concentrador y volví a compilar, y apareció junto con el resto. La adición de las interfaces lo rompió todo.

¿Alguien ha visto esto antes? ¿Falta alguna configuración o algo así?

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(() => { }); 
    } 
} 

Respuesta

7

Aquí hay un enlace a una pregunta similar Is there a way to get number of connections in Signalr hub group?

Si ese no ayuda usted podría mirar a las cosas nuevas en el estado de conexión SignalR 0.5.1

conexión cambia de estado

Una conexión SignalR siempre ha sido una caja negra para el usuario y esto dificultaba la detección de cambios en el estado de conexión subyacente. Hemos expuesto un nuevo evento stateChanged en JavaScript y clientes .NET. Esto le permite escuchar los cambios de estado y reaccionar ante ellos de diferentes maneras. Aquí hay un ejemplo que muestra al usuario un mensaje si la conexión entró en un estado de reconexión y no se recuperó después de 10 segundos:

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();