anchor.diff:        }
   
       };
  -
  -//    conn.onClosed = (e) {
  -//      clients.remove(c);
  -//    };
     }
   
     void onCall(Client c, String callId, String uri, arg) {
  
positive.code: 
  part 'src/server/client.dart';
  
  class WampHandler {
    Set<Client> clients = new Set();
    Map<String, Set<Client>> topicMap = new Map();
  
negative.code:    */
    void publish(String topicUri, event) {
      final uri = curie.decode(topicUri),
            subscribers = topicMap[uri],
            garbage = [];
  
      subscribers.forEach((client) {
        if (clients.contains(client)) {
          client.event(topicUri, event);
        } else {
          // The client is disconnected, so gc.
          garbage.add(client);
        }
      });
  
      // TODO: perfome gc when the client is disconnected?
      if (!garbage.isEmpty) {
        garbage.forEach((c) => clients.remove(c));
      }
    }
  }