RS, DG; We now delete channels when there is nobody subscribed to them
This commit is contained in:
parent
59147eb232
commit
088da2544b
1 changed files with 13 additions and 4 deletions
|
|
@ -26,17 +26,26 @@ module WebSocket
|
||||||
|
|
||||||
def self.push_to_user(uid, data)
|
def self.push_to_user(uid, data)
|
||||||
puts "Pushing to #{uid}"
|
puts "Pushing to #{uid}"
|
||||||
@channels[uid.to_s].push(data) if @channels[uid.to_s]
|
@channels[uid.to_s][0].push(data) if @channels[uid.to_s]
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.subscribe(uid, ws)
|
def self.subscribe(uid, ws)
|
||||||
puts "Subscribing #{uid}"
|
puts "Subscribing #{uid}"
|
||||||
@channels[uid] ||= EM::Channel.new
|
self.ensure_channel(uid)
|
||||||
@channels[uid].subscribe{ |msg| ws.send msg }
|
@channels[uid][0].subscribe{ |msg| ws.send msg }
|
||||||
|
@channels[uid][1] += 1
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.ensure_channel(uid)
|
||||||
|
@channels[uid] ||= [EM::Channel.new, 0 ]
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.unsubscribe(uid,sid)
|
def self.unsubscribe(uid,sid)
|
||||||
@channels[uid].unsubscribe(sid) if @channels[uid]
|
@channels[uid][0].unsubscribe(sid) if @channels[uid]
|
||||||
|
@channels[uid][1] -= 1
|
||||||
|
if @channels[uid][1] <= 0
|
||||||
|
@channels[uid] = nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue