Class: EventdClient

Inherits:
EventdObject show all
Defined in:
lib/eventd/eventd_client.rb

Instance Attribute Summary collapse

Attributes inherited from EventdObject

#events

Instance Method Summary collapse

Methods inherited from EventdObject

#off, #on

Constructor Details

#initialize(socket, server) ⇒ EventdClient

Returns a new instance of EventdClient.



21
22
23
24
25
26
# File 'lib/eventd/eventd_client.rb', line 21

def initialize(socket, server)
	super()
	@socket = socket
   @server = server
	setup_socket unless @socket == nil
end

Instance Attribute Details

#socketObject

em-websocket socket object



19
20
21
# File 'lib/eventd/eventd_client.rb', line 19

def socket
  @socket
end

Instance Method Details

#broadcast(channel, data = nil) ⇒ Object



62
63
64
# File 'lib/eventd/eventd_client.rb', line 62

def broadcast(channel, data = nil)
  @server.clients.each do |client| client.emit channel, data end
end

#emit(channel, data = nil, local = false) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/eventd/eventd_client.rb', line 53

def emit(channel, data = nil, local = false)
super(channel, data)

if not local
	emission = { 'channel' => channel, 'priority' => 'normal', 'data' => data }
	@socket.send emission.to_json
end
end

#setup_socketObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/eventd/eventd_client.rb', line 28

def setup_socket
	@socket.onopen do |handshake|
		self.emit('connect', handshake, true)
	end

	@socket.onclose do
		self.emit('disconnect', nil, true)
	end

	@socket.onmessage do |message|
     begin
		  emission = JSON.parse message

       if emission['broadcast']
         self.broadcast emission['channel'], emission['data']
       end

       self.emit emission['channel'], emission['data']
       self.emit('message', message, true)
     rescue Exception
       self.emit('message', message, true)
     end
	end
end