So I was testing chat logged into two computers. On "computer B" I disconnected the wireless network. Then on "Computer A" I sent 10 distinct messages.
After reconnecting the network on Computer B, the messages weren't all received and were missing messages.
Depending on when the network was reconnected sometimes some of the messages would be received but not all of them.
I feel like chat should have some way to deal with this case of client/server resync.
Perhaps the simplest i can think of is for the server to send a total count of the messages expected over in every payload. If it gets out of sync for too long then let the user know that they should refresh as they are missing messages. The messages they send would also be in the count so this would also be a verification that the message was received by the server.
There are probably better creative solutions that don't require the user to manually refresh. Maybe if the client could have a way to know what messages it was missing and retrieve the missing specific messages, inserting them in.
It seems to be an issue with some poor wireless or mobile connections that these messages get out of sync, but having an running indicator like "Last checked for messages at <date>" would provide additional confidence to the user.