
Web server — ``selkie.webserver``
=================================

.. py:class:: selkie.webserver.Backend

   To implement the back end of a Selkie web application,
   specialize this class.  It behaves like a dict whose keys are
   strings.  A key must begin with a forward slash.
   The portion following the initial slash is split at slashes (if
   any).  The first field is the *type* and the remaining fields are
   *arguments*.  The method whose name is ``get_`` followed by the
   type is invoked, with the arguments as arguments, to determine the
   value.  A KeyError is signalled if no such method exists.

   Setting or deleting a key behaves similarly, except that the
   invoked methods have prefix ``set_`` or ``del_``, respectively,
   instead of ``get_``.  In the case of a set method, the value is
   added as final argument.

   .. py:method:: __getitem__(uri)

      Split the uri into type and args.  Invoke ``get_`` + type on args.

   .. py:method:: __setitem__(uri, value)

      Split the uri into type and args.  Invoke ``get_`` + type on
      args + [value].

   .. py:method:: __delitem__(uri)

      Split the uri into type and args.  Invoke ``del_`` + type on
      args.
        
   .. py:method:: run(nw=False)

      Start the web server.  It will listen for websocket connections
      on port 8844.  A request is translated to a method invocation
      and the return value is sent back to the client.

      This method never returns; use ctrl-C to interrupt it.
