One person may now leave and rejoin and collabedit will still work.

Collabedit now always starts by sending the shadow from one person to the other. This case on a rejoin the saved shadow will be sent to the new user.
These two lines are repeated exactly as-is in four different methods. You should probably abstract them out to a private method that takes in a message to be sent and a socket and sends it down