2012-05-23 47 views
5

Cũng mở này là một vấn đề here nhưng hy vọng ai đó đã nhìn thấy điều này ..SignalR kết nối/ngắt kết nối trung tâm thổi lên

Tôi đã có một trung tâm rất đơn giản mà thực hiện IConnected/IDisconnect. Trong một dự án độc lập, trung tâm này đã thử nghiệm tuyệt vời.

Khi tôi bỏ nó vào dự án thực sự của tôi, nơi tôi đã có một số trung tâm khác, thêm vào đó không có trung tâm nào (xác nhận rằng không có hiện tượng nào trong/signalr/hub). Tôi sau đó nhận xét ra IConnected/IDisconnect trong trung tâm này và tái biên dịch, và nó xuất hiện cùng với phần còn lại. Thêm các giao diện trở lại đã phá vỡ tất cả.

Có ai nhìn thấy điều này trước đây không? Có một số cấu hình bị thiếu hoặc một cái gì đó?

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

Trả lời

7

Đây là một liên kết đến một câu hỏi tương tự Is there a way to get number of connections in Signalr hub group?

Nếu đó didnt giúp bạn có thể nhìn vào những thứ Nhà nước kết nối mới trong SignalR 0.5.1

kết nối Nhà nước thay đổi

Kết nối SignalR luôn là hộp đen cho người dùng và điều này làm cho việc phát hiện các thay đổi ở trạng thái kết nối cơ bản trở nên khó khăn. Chúng tôi đã tiếp xúc với sự kiện Thay đổi trạng thái mới trong các ứng dụng JavaScript và .NET. Điều này cho phép bạn lắng nghe những thay đổi của tiểu bang và phản ứng với chúng theo những cách khác nhau. Dưới đây là ví dụ hiển thị thông báo cho người dùng nếu kết nối được chuyển sang trạng thái kết nối lại và không phục hồi sau 10 giây:

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(); 
Các vấn đề liên quan