class WebSocket::Driver

Constants

BINARY
CloseEvent
ConfigurationError
ConnectEvent
MAX_LENGTH
MessageEvent
OpenEvent
ProtocolError
STATES
UNICODE
URIError

Attributes

protocol[R]
ready_state[R]

Public Class Methods

new(socket, options = {}) click to toggle source
# File lib/websocket/driver.rb, line 72
def initialize(socket, options = {})
  super()
  Driver.validate_options(options, [:max_length, :masking, :require_masking, :protocols])

  @socket      = socket
  @reader      = StreamReader.new
  @options     = options
  @max_length  = options[:max_length] || MAX_LENGTH
  @headers     = Headers.new
  @queue       = []
  @ready_state = 0
end

Public Instance Methods

add_extension(extension) click to toggle source
# File lib/websocket/driver.rb, line 90
def add_extension(extension)
  false
end
binary(message) click to toggle source
# File lib/websocket/driver.rb, line 114
def binary(message)
  false
end
close(reason = nil, code = nil) click to toggle source
# File lib/websocket/driver.rb, line 126
def close(reason = nil, code = nil)
  return false unless @ready_state == 1
  @ready_state = 3
  emit(:close, CloseEvent.new(nil, nil))
  true
end
ping(*args) click to toggle source
# File lib/websocket/driver.rb, line 118
def ping(*args)
  false
end
pong(*args) click to toggle source
# File lib/websocket/driver.rb, line 122
def pong(*args)
  false
end
set_header(name, value) click to toggle source
# File lib/websocket/driver.rb, line 94
def set_header(name, value)
  return false unless @ready_state <= 0
  @headers[name] = value
  true
end
start() click to toggle source
# File lib/websocket/driver.rb, line 100
def start
  return false unless @ready_state == 0
  response = handshake_response
  return false unless response
  @socket.write(response)
  open unless @stage == -1
  true
end
state() click to toggle source
# File lib/websocket/driver.rb, line 85
def state
  return nil unless @ready_state >= 0
  STATES[@ready_state]
end
text(message) click to toggle source
# File lib/websocket/driver.rb, line 109
def text(message)
  message = message.encode(UNICODE) unless message.encoding.name == UNICODE
  frame(message, :text)
end