2015-09-25 15 views
5

Chúng ta có thể tạo nhiều hub cho nhiều thứ khác nhau và để kết nối với mỗi hub, chúng ta có thể tạo nhiều hub phía máy khách với kết nối chia sẻ. trung tâm. Bây giờ, vấn đề phát sinh rằng phương thức hub được kết nối không tăng lên trên mỗi mã phía máy chủ trung tâm.Phương thức OnConnected không được gọi là SignalR khi tôi sử dụng kết nối chia sẻ trong nhiều hub

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

     } 
} 

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

     } 
} 

để nói, trên các mặt hàng i tạo hub1 và hub2 với các phương pháp phía khách hàng được xác định trên cả trung tâm, sau đó chỉ là một trong các trung tâm phương pháp onConnected được gọi về phía máy chủ. Nếu tôi tạo các hub ở phía máy khách với các kết nối riêng thì phương thức OnConnected sẽ được gọi. Vì vậy, có bất kỳ công việc khác xung quanh nếu tôi muốn sử dụng cùng một kết nối cho mỗi trung tâm nhưng cũng muốn nâng cao sự kiện kết nối của các trung tâm riêng biệt.

Trả lời

5

Tôi đã thử nghiệm nó bằng cách đặt điểm gỡ lỗi trên cả hai trung tâm và OnConnected không được gọi trên cả hai trung tâm, miễn là bạn có bất kỳ đăng ký nào cho cả hai trung tâm.

Xem ở đây: Can I debug OnConnected method in SignalR Hub?

câu chuyện dài ngắn: Theo thiết kế, nếu bạn không có bất kỳ đăng ký với trung tâm, sau đó khách hàng javascript không thể nhận được bất kỳ tin nhắn từ máy chủ nên OnConnected won không được gọi.

EDIT

Xem here Note phần:

Lưu ý: Đối với khách hàng JavaScript bạn phải đăng ký ít nhất một sự kiện xử lý trước khi gọi phương thức Start để thiết lập kết nối.

Xem thêm tại liên kết.

+0

Thậm chí, nếu kết nối được chia sẻ giữa các hub? –

+1

Có. Đó là thực hiện hiện tại. Nếu máy khách không đăng ký bất kỳ sự kiện nào của hub, không cần phải tạo (các) đối tượng hub sẽ không bao giờ được sử dụng. Đây là hành vi trong trường hợp máy khách javascript. .NET client sẽ luôn tạo kết nối độc lập với việc đăng ký các sự kiện hoặc không. Tôi sẽ chỉnh sửa câu trả lời để cung cấp thêm thông tin. – DDan

+0

Thật kỳ lạ, nhưng là điểm tốt. – Jacob

Các vấn đề liên quan