docs: def on_event(self, message, handler, namespace=None):
          """Register a SocketIO event handler.
  
          ``on_event`` is the non-decorator version of ``'on'``.
  
          Example::
  
              def on_foo_event(json):
                  print('received json: ' + str(json))
  
              socketio.on_event('my event', on_foo_event, namespace='/chat')
  
          :param message: The name of the event. This is normally a user defined
                          string, but a few event names are already defined. Use
                          ``'message'`` to define a handler that takes a string
                          payload, ``'json'`` to define a handler that takes a
                          JSON blob payload, ``'connect'`` or ``'disconnect'``
                          to create handlers for connection and disconnection
                          events.
          :param handler: The function that handles the event.
          :param namespace: The namespace on which the handler is to be
                            registered. Defaults to the global namespace.
          """
          self.on(message, namespace=namespace)(handler)