protocol def and Connection.on / Connection.emit