2012-03-20 47 views
5

SignalR xử lý ngắt kết nối máy khách như thế nào? Tôi có đúng không nếu tôi tuyên bố như sau?SignalR: ngắt kết nối máy khách

  • SignalR sẽ phát hiện trang trình duyệt đóng/làm mới thông qua xử lý sự kiện Javascript và sẽ gửi gói phù hợp tới máy chủ (thông qua kết nối bền bỉ);
  • SignalR sẽ KHÔNG phát hiện lỗi đóng/đóng trình duyệt (có thể chỉ khi hết thời gian chờ).

Tôi nhắm đến việc vận chuyển bỏ phiếu dài.

Tôi biết về this question nhưng muốn làm cho nó hơi rõ ràng đối với tôi.

Trả lời

9

Nếu người dùng làm mới trang, được coi là kết nối mới. Bạn đúng là ngắt kết nối dựa trên thời gian chờ.

Bạn có thể xử lý các sự kiện Kết nối/Kết nối lại và Ngắt kết nối trong Trung tâm bằng cách triển khai SignalR.Hubs.IConnectedSignalR.Hubs.IDisconnect.

Ở trên được gọi là SignalR 0.5.x.

Từ the official documentation (hiện cho v1.1.3):

public class ContosoChatHub : Hub 
{ 
    public override Task OnConnected() 
    { 
     // Add your own code here. 
     // For example: in a chat application, record the association between 
     // the current connection ID and user name, and mark the user as online. 
     // After the code in this method completes, the client is informed that 
     // the connection is established; for example, in a JavaScript client, 
     // the start().done callback is executed. 
     return base.OnConnected(); 
    } 

    public override Task OnDisconnected() 
    { 
     // Add your own code here. 
     // For example: in a chat application, mark the user as offline, 
     // delete the association between the current connection id and user name. 
     return base.OnDisconnected(); 
    } 

    public override Task OnReconnected() 
    { 
     // Add your own code here. 
     // For example: in a chat application, you might have marked the 
     // user as offline after a period of inactivity; in that case 
     // mark the user as online again. 
     return base.OnReconnected(); 
    } 
} 
6

Trong SignalR 1.0, SignalR.Hubs.IConnected và SignalR.Hubs.IDisconnect không còn được thực hiện, và bây giờ nó chỉ là ghi đè trên chính nó:

public class Chat : Hub 
{ 
    public override Task OnConnected() 
    { 
     return base.OnConnected(); 
    } 

    public override Task OnDisconnected() 
    { 
     return base.OnDisconnected(); 
    } 

    public override Task OnReconnected() 
    { 
     return base.OnReconnected(); 
    } 
} 
Các vấn đề liên quan