Module: RspecWeb::WebSocketServer

Defined in:
lib/rspec_web/web_socket_server.rb

Class Method Summary collapse

Class Method Details

.runObject



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/rspec_web/web_socket_server.rb', line 8

def run
  EventMachine.run do
    @receivers = {}
    
    EventMachine::WebSocket.start(host: '0.0.0.0', port: 10081) do |ws|
      ws.onmessage do |raw_msg|
        msg = JSON.parse(raw_msg)
        
        if msg.has_key?("receiver")
          receiver = msg["receiver"]
          case receiver
          when "server"
            if msg.has_key?("method")
              case msg["method"]
              when "identify"
                identity = msg["arguments"].first
                @receivers[identity] ||= []
                @receivers[identity] << ws
              when "disconnect"
                identity = msg["arguments"].first
                @receivers[identity] ||= []
                @receivers[identity].delete(ws)
              when "runSpecs"
                command = msg["arguments"].first
                
                Thread.new { `#{command}` }
              end
            end
          when "web" || "rspec"  
            @receivers[receiver] ||= []
            @receivers[receiver].each { |socket| socket.send(raw_msg) }
          end
        end
      end
      
      # ws.onclose {}
    end
  end
end

.run!Object



48
49
50
# File 'lib/rspec_web/web_socket_server.rb', line 48

def run!
  Thread.new { run }
end