The handler is the callback function from zmqstream class. You can see in the ```__init__``` function of Socket, we register callback of socket by using self._stream.on_recv(xxx). So the handler function of zmqstream will receive the message and call our on_recv function.

Maybe we don't need a handle_read function since we register the on_recv function already(in Socket.\__init__)?  We can only dd the handle_write function? like:

```
while 1:
  poll()
  ...
  for fd, events in socks...
    
   for fd, events in sock.iteritems():
     handler = self._handler[fd]
     handler(None, events)

    if event & ..:
     self.sockets[fd].handle_write()

   for socket in self._to_modify:
     poller.do_something
```

If we use handle_read instead of on_recv, we should not call ``` self._stream.on_recv(self.on_recv)``` in Socket for ServerSocket.

Which one do you prefer?