Class WebSocket::Handshake::Client
In: lib/websocket/handshake/client.rb
Parent: Base

Construct or parse a client WebSocket handshake.

@example

  @handshake = WebSocket::Handshake::Client.new(:url => 'ws://example.com')

  # Create request
  @handshake.to_s # GET /demo HTTP/1.1
                  # Upgrade: websocket
                  # Connection: Upgrade
                  # Host: example.com
                  # Sec-WebSocket-Origin: http://example.com
                  # Sec-WebSocket-Version: 13
                  # Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

  # Parse server response
  @handshake << <<EOF
  HTTP/1.1 101 Switching Protocols\r
  Upgrade: websocket\r
  Connection: Upgrade\r
  Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r
  \r
  EOF

  # All data received?
  @handshake.finished?

  # No parsing errors?
  @handshake.valid?

Methods

<<   new   should_respond?  

Constants

FIRST_LINE = /^HTTP\/1\.1 (\d{3})[\w\s]*$/

Public Class methods

Initialize new WebSocket Client

@param [Hash] args Arguments for client

@option args [String] :host Host of request. Required if no :url param was provided. @option args [String] :origin Origin of request. Optional, should be used mostly by browsers. Default: nil @option args [String] :path Path of request. Should start with ’/’. Default: ’/’ @option args [Integer] :port Port of request. Default: nil @option args [String] :query. Query for request. Should be in format "aaa=bbb&ccc=ddd" @option args [Boolean] :secure Defines protocol to use. If true then wss://, otherwise ws://. This option will not change default port - it should be handled by programmer. @option args [String] :url URL of request. Must by in format like ws://example.com/path?query=true. Every part of this url will be overriden by more specific arguments. @option args [String] :uri Alias to :url @option args [Integer] :version Version of WebSocket to use. Default: 13 (this is version from RFC)

@example

  Websocket::Handshake::Client.new(:url => "ws://example.com/path?query=true")

Public Instance methods

Add text of response from Server. This method will parse content immediately and update state and error(if neccessary)

@param [String] data Data to add

@example

  @handshake << <<EOF
  HTTP/1.1 101 Switching Protocols
  Upgrade: websocket
  Connection: Upgrade
  Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

  EOF

Should send content to server after finished parsing? @return [Boolean] false

[Validate]