Can SignalR handle missed messages?

2020-02-26 07:56发布

问题:

Say my network connection drops for a few seconds and I miss some SignalR server-pushed messages.

When I regain network connectivity are the messages I missed lost? or does signalR handle them and push them out when I reconnect?

If it can't handle missed messages, then what is the recommended approach for ensuring consistency?

  • Periodically (2-3 mins) poll to check server-data?
  • Somehow detect loss of network on the client side and do an ajax call to get the data on network restoration?
  • something else?

回答1:

Here are a couple of thoughts:

If you aren't sending a lot of messages per second, consider sending no data in the messages themselves. Instead, the message is just a "ping" to the clients telling them to go get the server data when they can. Combine that with a periodic poll, as you said, and you can be assured that you won't miss messages. They just might be delayed.

If you are sending a lot of messages quickly, how about adding a sequential ID to each one? Think of a SQL Identity column. Your clients would need to keep track of the most recent ID received. After a network reconnect, the client could ask for all messages since [Last ID]. If a message is received whose ID is not contiguous with the most recently received, you know that there was a disconnect and can ask the server for the missing information.



标签: signalr