anchor.diff:    vDir.serveFile(new File(indexUri.toFilePath()), request);
   }
   
  +typedef bool validEvent(PlayerEvent event);
  +Map<PlayerEvent, validEvent> _handlers = {
  +                                          JoinGame : handleJoinGame,
  +                                          LeaveGame : handleLeaveGame
  +                                          };
  +
   void handleWebSocket(WebSocket ws) {
     print("Player connected");
     final playerId = generatePlayerId();
  
positive.code:   
    controler.add(new Welcome(playerId: playerId));
    // broadcast all events history to player
    _eventsHistory.forEach(controler.add);
    // TODO sent welcome to every body ?  
  }
  
  void disconnectPlayer(int playerId) {
    print("Connexion is lost");
    if(_clients.containsKey(playerId)){
      _clients[playerId].close();
  
negative.code:   _clients.values.forEach((controler) => controler.add(event));
  }
  
  bool handleJoinGame(JoinGame event) {
    print("Player ${event.playerId} is ready");  
    // TODO add to players
    return true;
  }
  
  bool handleLeaveGame(LeaveGame event) {
    print("Player ${event.playerId} is leaving");
    _clients[event.playerId].close();
    _clients.remove(event.playerId);
    // TODO remove from players
    return true;
  }