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 => "localhost", :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
end
end
end
|