[undertow-dev] Proposed Low Level Web Sockets API

Norman Maurer nmaurer at redhat.com
Tue Oct 9 05:21:15 EDT 2012


Hi Stuart,

thanks for kicking this off..

I think this makes sense and should be a good "base" for a high-level API.

Let me do some more testing and integrate the idea in my websockets effort under (it's still in an early stage):
https://github.com/normanmaurer/undertow/tree/websockets

Bye,
Norman

Am 09.10.2012 um 10:30 schrieb Stuart Douglas <sdouglas at redhat.com>:

> Hi Guys,
> 
> So I have just been thinking about the low level web socket API, and basically I think it should look something like:
> 
> class WebSocketChannel {
> 
>  /**
>   * Async receive, returns null if no frame is ready. Otherwise returns a channel that can be used to read the frame contents.
>   */
>  StreamSourceFrameChannel receive();
> 
>  /**
>   * Returns a new frame channel for sending. If this is called multiple times subsequent channels will not be writable until all previous frame have been completed.
>   */
>  StreamSinkFrameChannel send();
> 
>  /**
>   * Lister to call when a new frame is ready
>   */
>  ChannelListener.Setter<? extends WebSocketChannel> getReceiveSetter();
> 
>  ChannelListener.Setter<? extends WebSocketChannel> getCloseSetter();
> 
> }
> 
> Basically once the connection is established, this channel can be used to get FrameChannels to send and receive frames. A FrameChannel will act like a normal Source/Sink Channel, however with some extra methods for determining the type of frame.
> 
> the undertow integration will consist of a handler that performs the initial handshake, and set up the connection. Once the handler has creates this WebSocketChannel, it hands it off to the user (the user will register a ChannelListener with the handler for this purpose), and this is where Undertow core stops having anything to do with the connection, and the web socket library takes over.
> 
> All higher level web socket functionality will be based on this low level API.
> 
> Thoughts?
> 
> Stuart




More information about the undertow-dev mailing list