rtc-io / rtc-switchboard

Node server side in memory signaller for rtc.io components
http://www.rtc.io/modules.html
57 stars 36 forks source link

Handle Socket Dropout and Reconnection #13

Closed DamonOehlman closed 10 years ago

DamonOehlman commented 10 years ago

Currently when a socket is closed switchboard takes this as an indication that the client has left. This is not correct as a websocket connection (like any other network connection) is susceptible to dropping out. Primus handles this case and automatically reconnects "sparks" - we need to ensure that this is handled correctly by the switchboard.

DamonOehlman commented 10 years ago

Having a look at the primus docs on how reconnections are handled this may require implementation at the rtc-signaller level rather than the switchboard. Primarily this is because the client has more awareness of when reconnection is being attempted than the server.

One rtc-switchboard only option is to start a leave timer when the disconnection is detected, and after a certain time actually send the /leave messages throughout the room. This would be a pretty hit and miss strategy, however, and using a combination of the iceConnectionState of a peer connection in conjunction with the signaling connection status probably makes more sense...

DamonOehlman commented 10 years ago

This has been implemented at the rtc-signaller module layer.