
Each of the modules provide a specialization of _org.apache.wicket.protocol.http.WicketFilter_ that registers implementation specific endpoint when an HTTP request is http://en.wikipedia.org/wiki/WebSocket#WebSocket_protocol_handshake[upgraded].

WebSockets communication can be used in a Wicket page by using _org.apache.wicket.protocol.ws.api.WebSocketBehavior_ or in a IResource by extending _org.apache.wicket.protocol.ws.api.WebSocketResource_.
When a client is connected it is being registered in a application scoped registry using as a key the application name, the client http session id, and the id of the page or the resource name that registered it. Later when the server needs to push a message it can use this registry to filter out which clients need to receive the message.

When a message is received from the client Wicket wraps it in _IWebSocketMessage_ and calls WebSocketBehavior.*onMessage()* or WebSocketResource.*onMessage()* where the application logic can react on it.
The server can push plain text and binary data to the client, but it can also add components for re-render, prepend/append JavaScript as it can do with 
<<_working_with_ajax,Ajax>>.

