42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/openpushed.rb', line 42
def run!
$SOCKS = {}
Thread.new do
$redis = Redis.new
$redis.subscribe("notifications") do|on|
OpenPushed::Logger.log "Subcribed to channel"
on.message do |channel,message|
data = JSON.parse(message)
$SOCKS[data["channel"]].each do |socket|
socket.send(data["msg"])
end
end
end
end
Thread.new do
EM.run {
EM::WebSocket.run(:host => "0.0.0.0", :port => 2803) do |ws|
ws.onopen { |handshake|
OpenPushed::Logger.log "Opening connection"
}
ws.onclose { OpenPushed::Logger.log "Connection closed" }
ws.onmessage { |msg|
if(msg == "0\n" || msg == "0")
else
key = @keys.where(:channelid => msg).first
if(key == nil)
ws.close
else
OpenPushed::Logger.log "Client added to channel"
if($SOCKS[msg] == nil)
$SOCKS[msg] = []
end
$SOCKS[msg] << ws
end
end
}
end
}
end
Thread.new do
end
sleep
end
|