GOPHERSPACE.DE - P H O X Y
gophering on gopher.black
Persistence (session-like behavior)

Gopher does not provide any native method for session management
or persistence. This simplifies the protocol overhead, but it
limits the applicability of applications which can be developed.

Possible persistence implementation:

    Using a unique menu identifier (& used here only as example),
    we can direct our server to process requests so that they
    return tokenized menu items going forward. For example,
    following a menu item like

    &Session Link\t/path/to/service\tserver.org\t70

    it could return a menu with partially hijacked links which
    will maintain persistence:

    &Menu Item 1\t /session:/path/to/service\tserver.org\t70

    Content served via a persistent type will maintain an existing
    session ID if it exists, or generate a new one otherwise. If
    the id is set, actions could theoretically be captured to that
    ID and stored server-side, potentially changing the content
    that is served with each request.

    The server would be responsible for parsing menu items of
    & type to detect and handle session ids. If the output is
    a gophermap, logic must determine whether the generated links
    would also be of type & or traditional types. It is
    recommended for simplicity that any menu item of type ∞ would
    prefix future menu items of the same type but not affect other
    types. This allows parallel development of alternative type
    handlers and avoids collisions.
.