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
`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