Module: Smash::CloudPowers::Synapse::WebSoc::SocClient

Included in:
Smash::CloudPowers::Synapse::WebSoc
Defined in:
lib/cloud_powers/synapse/web_soc/soc_client.rb

Instance Method Summary collapse

Instance Method Details

#create_websoc_client(opts = {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/cloud_powers/synapse/web_soc/soc_client.rb', line 8

def create_websoc_client(opts = {})
  ws = {}
  Thread.new(ws) do
    EM.run do
      ws = WebSocket::EventMachine::Client.connect(:uri => 'ws://' + opts[:host]  + ':' + opts[:port])

      client_name = opts[:client] || 'default_client'

      instance_variable_set(:"@#{client_name}",ws)

      open_callback = opts[:on_open] || Proc.new do
        puts "Connected"
      end

      ws.onopen &open_callback

      on_message_callback = opts[:on_message] || Proc.new do |msg, type|
        puts "Received message: #{msg}"
      end

      ws.onmessage &on_message_callback

      on_error_callback = opts[:on_error] || Proc.new do |error|
        puts "Error ==> #{error}"
      end

      ws.onerror &on_error_callback

      on_close_callback = opts[:on_close] || Proc.new do |code, reason|
        puts "Disconnected with status code: #{code}"
        puts "Disconnected with status message: #{reason}"
      end

      ws.onclose &on_close_callback

    end

  end
end