private void HandleClientDisconnected(object sender, ClientConnectionEventArgs e)
 {
     var clientConnection = e.ClientConnection;
     lock(animationStartCallbacks)
     {
         if (animationStartCallbacks.ContainsKey(clientConnection))
             animationStartCallbacks.Remove(clientConnection);
     }
     lock(animationStopCallbacks)
     {
         if (animationStopCallbacks.ContainsKey(clientConnection))
             animationStopCallbacks.Remove(clientConnection);
     }
 }
 private void HandleClientConnected(object sender, ClientConnectionEventArgs e)
 {
     var clientConnection = e.ClientConnection;
     ClientFunction animationStartTrigger = clientConnection.GenerateClientFunction("animation", "receiveClientsideAnimationStart");
     ClientFunction animationStopTrigger = clientConnection.GenerateClientFunction("animation", "receiveClientsideAnimationStop");
     lock (animationStartCallbacks)
     {
         if (!animationStartCallbacks.ContainsKey(clientConnection))
             animationStartCallbacks.Add(clientConnection, animationStartTrigger);
     }
     lock (animationStopCallbacks)
     {
         if (!animationStopCallbacks.ContainsKey(clientConnection))
             animationStopCallbacks.Add(clientConnection, animationStopTrigger);
     }
 }