class EventMachine::WebSocketClient

Attributes

url[RW]

Public Class Methods

connect(uri) click to toggle source
# File lib/em-websocket-client.rb, line 11
def self.connect uri
  p_uri = URI.parse(uri)
  conn = EM.connect(p_uri.host, p_uri.port || 80, self) do |c|
    c.url = uri
  end
end

Public Instance Methods

connected(&cb;) click to toggle source
# File lib/em-websocket-client.rb, line 30
def connected &cb; @connect = cb; end
connection_completed() click to toggle source
# File lib/em-websocket-client.rb, line 23
def connection_completed
  @connect.yield if @connect
  @hs = ::WebSocket::Handshake::Client.new(:url => @url)
  send_data @hs.to_s
end
disconnect(&cb;) click to toggle source
# File lib/em-websocket-client.rb, line 31
def disconnect &cb; @disconnect = cb; end
post_init() click to toggle source
# File lib/em-websocket-client.rb, line 18
def post_init
  @handshaked = false
  @frame  = ::WebSocket::Frame::Incoming::Client.new
end
receive_data(data) click to toggle source
# File lib/em-websocket-client.rb, line 33
def receive_data data
  if !@handshaked
    @hs << data
    if @hs.finished?
      @handshaked = true
      succeed
    end
  else
    @frame << data
    while msg = @frame.next
      @stream.call(msg) if @stream
    end
  end
end
send_msg(s, args={}) click to toggle source
# File lib/em-websocket-client.rb, line 48
def send_msg(s, args={})
  type = args[:type] || :text
  frame = ::WebSocket::Frame::Outgoing::Client.new(:data => s, :type => type, :version => @hs.version)
  send_data frame.to_s
end
stream(&cb;) click to toggle source
# File lib/em-websocket-client.rb, line 29
def stream &cb; @stream = cb; end
unbind() click to toggle source
Calls superclass method
# File lib/em-websocket-client.rb, line 54
def unbind
  super
  @disconnect.call if @disconnect
end