2011-10-12 34 views
11

Tôi đang cân nhắc việc cập nhật trang web hiện có để sử dụng SignalR. Trang web của tôi thăm dò ý kiến ​​của một dịch vụ của bên thứ ba về các thay đổi dữ liệu, thực hiện một số phép thuật trên đó và khách hàng sẽ thăm dò ý kiến ​​đó vài phút một lần để làm mới chế độ xem của họ với bất kỳ cập nhật nào.SignalR với kết nối không đáng tin cậy hoặc tạm dừng và kết nối lại?

SignalR có vẻ như là một cách tuyệt vời để loại bỏ bỏ phiếu từ khách hàng, nhưng tôi muốn biết cách xử lý SignalR giảm các kết nối được kết nối lại, đặc biệt liên quan đến các ứng dụng web di động có thể đã bị tạm ngưng một thời gian. Nó sẽ tự động thương lượng và xếp hàng bất kỳ cập nhật nào đã bị bỏ lỡ trong thời gian chờ đợi, hay khách hàng cần phải resynch từ đầu trong những trường hợp này? Tôi nhìn nhưng không thể tìm thấy bất kỳ tài liệu nào về điều này nên hướng dẫn sẽ được đánh giá cao.

Trả lời

10

Tất cả điều này là chắc chắn có thể vì khách hàng theo dõi id tin nhắn cuối cùng mà nó đã xem. Nếu nó đã xảy ra để bỏ lỡ tin nhắn, nó sẽ nhận được những người sau khi nó quay trở lại máy chủ (yêu cầu tất cả các tin nhắn kể từ lần cuối cùng nó nhìn thấy).

Theo mặc định, phía máy chủ của SignalR lưu trữ thư trong bộ nhớ (và nó xóa đi vài giây một lần), nhưng bạn có thể thay đổi nó thành lưu giữ lâu dài (xem IMessageStore) nếu bạn đang nghĩ về khách hàng đang ngoại tuyến và bắt kịp.

Bạn thậm chí có thể tự lưu giữ thông điệp trong logic ứng dụng của riêng mình trong khi SignalR lưu trữ nội dung trong bộ nhớ. Nó thực sự phụ thuộc vào ứng dụng.

Chúng tôi chưa thêm bất kỳ hỗ trợ đặc biệt nào cho khách hàng di động, nhưng bạn có thể duy trì id thư trong bất kỳ dung lượng lưu trữ cục bộ nào bạn cần cho ứng dụng di động của mình.

Các chi tiết đó không cụ thể nhưng những gì bạn muốn làm là tất cả có thể với SignalR.

+0

Tuyệt vời, cảm ơn. Thêm tín dụng: bạn có thể chỉ cho tôi bất kỳ ứng dụng demo/mã nào làm điều gì đó như thế này không? –

+0

Không, tôi không thể :). SignalR là thương hiệu mới và chúng tôi chưa thực hiện nhiều công việc với thiết bị di động. – davidfowl

+0

Ah tốt. Thực tế là điện thoại di động không liên quan trực tiếp, nhưng đó là nơi bạn có thể ** đếm ** ngắt mạng (_ * ho * AT & T_), ứng dụng tạm ngưng/chấm dứt mà không cảnh báo, v.v. Nghe có vẻ như nó có các móc cấp thấp cần thiết - ID trong các yêu cầu, IMessageStore - để tự xây dựng phần còn lại trên đầu. Sẽ chia sẻ nếu tôi có thể tổng quát hóa nó đủ! –

0

đọc Understanding and Handling Connection Lifetime Events in SignalR, đặc biệt là các phần sau:

  • How to continuously reconnect - cần thiết để phục hồi từ trạng thái bị ngắt kết nối;
  • How to notify the user about disconnections - để ứng dụng của bạn không chỉ thông báo cho người dùng mà còn phát hiện các thay đổi trạng thái (ngắt kết nối, kết nối lại, kết nối lại) để làm mới trạng thái của ứng dụng theo các cách khác.

Tài liệu đó được viết vào năm 2014 và về cơ bản đã lỗi thời nhiều câu hỏi/câu trả lời liên quan đến SignalOverflow sai hoặc không đầy đủ từ giai đoạn 2011-2012.

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