2016-09-29 6 views
0

https://stackoverflow.com/a/36230416/5381547Get Liste aller registrierten Verbindungen

https://stackoverflow.com/a/32945949/5381547

Diese Antworten mir nicht helfen.

Ich möchte eine Liste aller registrierten Verbindungen zu meinem ActionCable bekommen. Ich habe versucht,

Redis.new.pubsub("channels", "action_cable/*")

und

ActionCable.server.connections.length,

aber beide zurückkehren []. So jetzt so etwas wie

def connect 
    self.uuid = SecureRandom.uuid 

    players_online = REDIS.get('players_online') || 0 
    players_online = players_online.to_i 
    players_online += 1 
    REDIS.set('players_online', players_online) 
end 

def disconnect 
    players_online = REDIS.get('players_online').to_i 
    players_online -= 1 
    REDIS.set('players_online', players_online) 
end 

Aber ich verwende ich weiß, dass dies ein völlig nicht Rails-Weg ist. Gibt es eine Möglichkeit, eine Liste aller registrierten Verbindungen zu erhalten?

Antwort

2

Ich habe endlich eine Lösung gefunden.

def connect 
    self.uuid = SecureRandom.uuid 
    transmit({'title': 'players_online', 'message': ActionCable.server.connections.size + 1}) 
    ActionCable.server.connections.each do |connection| 
    connection.transmit({'title': 'players_online', 'message': ActionCable.server.connections.size + 1}) 
    end 
end 

def disconnect 
    transmit({'title': 'players_online', 'message': ActionCable.server.connections.size}) 
    ActionCable.server.connections.each do |connection| 
    connection.transmit({'title': 'players_online', 'message': ActionCable.server.connections.size}) 
    end 
end 

ActionCable.server.connections erhält eine Liste aller Server-Verbindung, mit Ausnahme des einen, das momentan mit der Buchse verbindet. Deshalb müssen Sie ihm eine Nachricht direkt senden mit ActionCable.server.connections.size + 1

+1

Beachten Sie, dass ActionCable.server.connections nicht zwischen verschiedenen Prozessen geteilt wird – fabriciofreitag

Verwandte Themen