Interface HttpServer.WebSocketRoutes

Enclosing class:
HttpServer

public static interface HttpServer.WebSocketRoutes

Where websocket routes come from.

The server ASKS for them, once, while it is starting and before the listener accepts anything. It is not a setter, and that is the point: this server is event driven everywhere else -- a Handler is called, a @RestController is found by the build, Backend.Handlers is invoked with what the server opened -- and a mutable registry an application pokes at afterwards is a different model bolted onto the side of it.

It also removes a race rather than documenting one. Registration that happened after start returned left a window in which the listener was already bound and a valid upgrade arriving in it fell through to the ordinary HTTP handler, because the route it wanted did not exist yet. A callback the server runs before it accepts cannot have that window.