org.jboss.netty.handler.codec.http.websocketx

## Class WebSocketServerHandshaker00

- java.lang.Object
- - org.jboss.netty.handler.codec.http.websocketx.WebSocketServerHandshaker
  - - org.jboss.netty.handler.codec.http.websocketx.WebSocketServerHandshaker00

-     public class WebSocketServerHandshaker00
      extends WebSocketServerHandshaker

  Performs server side opening and closing handshakes for web socket specification version draft-ietf-hybi-thewebsocketprotocol- 00

  A very large portion of this code was taken from the Netty 3.2 HTTP example.

- - ### Field Summary

    - ### Fields inherited from class org.jboss.netty.handler.codec.http.websocketx.WebSocketServerHandshaker

      `HANDSHAKE_LISTENER`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `WebSocketServerHandshaker00(String webSocketURL, String subprotocols)` Constructor with default values
    `WebSocketServerHandshaker00(String webSocketURL, String subprotocols, long maxFramePayloadLength)` Constructor specifying the destination web socket location

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `ChannelFuture` | `close(Channel channel, CloseWebSocketFrame frame)` Echo back the closing frame
    `ChannelFuture` | `handshake(Channel channel, HttpRequest req)` Handle the web socket handshake for the web socket specification HyBi version 0 and lower.

    - ### Methods inherited from class org.jboss.netty.handler.codec.http.websocketx.WebSocketServerHandshaker

      `getMaxFramePayloadLength, getSelectedSubprotocol, getSubprotocols, getVersion, getWebSocketUrl, selectSubprotocol, setSelectedSubprotocol`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### WebSocketServerHandshaker00

          public WebSocketServerHandshaker00(String webSocketURL,
                                     String subprotocols)

      Constructor with default values
      Parameters:
        `webSocketURL` - URL for web socket communications. e.g "ws://myhost.com/mypath". Subsequent web socket frames will be sent to this URL.
        `subprotocols` - CSV of supported protocols

    - #### WebSocketServerHandshaker00

          public WebSocketServerHandshaker00(String webSocketURL,
                                     String subprotocols,
                                     long maxFramePayloadLength)

      Constructor specifying the destination web socket location
      Parameters:
        `webSocketURL` - URL for web socket communications. e.g "ws://myhost.com/mypath". Subsequent web socket frames will be sent to this URL.
        `subprotocols` - CSV of supported protocols
        `maxFramePayloadLength` - Maximum allowable frame payload length. Setting this value to your application's requirement may reduce denial of service attacks using long data frames.

  - ### Method Detail

    - #### handshake

          public ChannelFuture handshake(Channel channel,
                                HttpRequest req)

      Handle the web socket handshake for the web socket specification HyBi version 0 and lower. This standard is really a rehash of hixie-76 and hixie-75.

      Browser request to the server:

           GET /demo HTTP/1.1
           Upgrade: WebSocket
           Connection: Upgrade
           Host: example.com
           Origin: http://example.com
           Sec-WebSocket-Protocol: chat, sample
           Sec-WebSocket-Key1: 4 @1  46546xW%0l 1 5
           Sec-WebSocket-Key2: 12998 5 Y3 1  .P00

           ^n:ds[4U

      Server response:

           HTTP/1.1 101 WebSocket Protocol Handshake
           Upgrade: WebSocket
           Connection: Upgrade
           Sec-WebSocket-Origin: http://example.com
           Sec-WebSocket-Location: ws://example.com/demo
           Sec-WebSocket-Protocol: sample

           8jKS'y:G*Co,Wxa-

      Specified by:
        `handshake` in class `WebSocketServerHandshaker`
      Parameters:
        `channel` - Channel
        `req` - HTTP request

    - #### close

          public ChannelFuture close(Channel channel,
                            CloseWebSocketFrame frame)

      Echo back the closing frame
      Specified by:
        `close` in class `WebSocketServerHandshaker`
      Parameters:
        `channel` - Channel
        `frame` - Web Socket frame that was received

Copyright © 2008-2012 The Netty Project. All Rights Reserved.