class EventMachine::WebSocketIO::Client
Constants
- VERSION
Attributes
running[R]
session[R]
timeout[RW]
url[R]
Public Class Methods
new(url)
click to toggle source
# File lib/em-websocketio-client/client.rb, line 8 def initialize(url) raise ArgumentError, "invalid websocket URL \"#{url}\"" unless url =~ /^ws:\/\/.+/ @url = url @running = false @__reconnect_timer_id = nil @ws = nil self.on :__session_id do |session_id| @session = session_id self.emit :connect, session_id end end
Public Instance Methods
close()
click to toggle source
# File lib/em-websocketio-client/client.rb, line 50 def close @running = false @ws.close_connection if @ws EM::cancel_timer @__reconnect_timer_id end
connect()
click to toggle source
# File lib/em-websocketio-client/client.rb, line 20 def connect url = @session ? "#{@url}/session=#{@session}" : @url @ws = EventMachine::WebSocketClient.connect url @running = true @ws.stream do |msg| data = JSON.parse msg.data self.emit data['type'], data['data'] end @ws.callback do self.push :__session_id end @ws.errback do |err| self.emit :error, err end @ws.disconnect do self.emit :disconnect if @running @__reconnect_timer_id = EM::add_timer 10 do connect end end end return self end
push(type, data={})
click to toggle source
# File lib/em-websocketio-client/client.rb, line 56 def push(type, data={}) @ws.send_msg({:type => type, :data => data, :session => self.session}.to_json) end