2013-07-28 39 views
15

Tôi đang cố gắng gỡ lỗi trung tâm SignalR và nhận thấy rằng hàm tạo được gọi nhiều lần, ngay cả với một máy khách đơn lẻ. Đây có phải là hành vi mong đợi không? Tôi đã mong đợi hàm khởi tạo được gọi chỉ một lần để khởi tạo lớp, nhưng tôi nhấn điểm ngắt của tôi nhiều lần.Khi nào thì hàm tạo của trung tâm SignalR được gọi là?

+0

không chắc chắn, nhưng tôi nghĩ rằng nó là một cái mới trên mọi yêu cầu – MEYWD

Trả lời

17

Trong trường hợp Trung tâm SignalR sẽ được tạo cho mỗi yêu cầu. Vì vậy, nó không quan trọng nếu chỉ có một khách hàng hoặc nhiều hơn. Trong thực tế Hub là một trừu tượng hơn PersistentConnection, nếu bạn muốn kiểm soát chính xác hơn những điều xảy ra đằng sau hiện trường bạn có thể sử dụng PersistentConnection. Kiểm tra tại đây: https://github.com/SignalR/SignalR/wiki/PersistentConnection

+2

Thậm chí nhiều hơn thế. Một lần cho mỗi lời gọi có thể nhiều hơn mỗi yêu cầu (trong trường hợp của websockets) – davidfowl

5

Khi Ẩn danh được chỉ ra chính xác, SignalR tạo một bản sao Hub mới cho mọi yêu cầu. Bạn nên sử dụng các thành viên tĩnh để lưu trữ thông tin bạn muốn trong Hub cho tất cả các yêu cầu. Nếu bạn muốn thực hiện một số thao tác mỗi khi một máy khách mới kết nối với hub, bạn nên đặt mã đó vào OnConnected.

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