Sto provando a creare una semplice applicazione di tipo chat (pianificazione dell'app per il poker) con Action Cable. Sono un po 'confuso dalla terminologia, dalla gerarchia dei file e da come funzionano i callback.ActionCable - come visualizzare il numero di utenti connessi?
Questa è l'azione che crea sessione utente:
class SessionsController < ApplicationController
def create
cookies.signed[:username] = params[:session][:username]
redirect_to votes_path
end
end
Un utente può quindi inviare un voto che dovrebbe essere trasmesso a tutti:
class VotesController < ApplicationController
def create
ActionCable.server.broadcast 'poker',
vote: params[:vote][:body],
username: cookies.signed[:username]
head :ok
end
end
Fino a questo punto tutto è chiaro per me e funziona bene. Il problema è: come posso visualizzare il numero di utenti connessi? C'è un richiamo che si attiva in JS quando un utente (utente?) Si connette? Quello che voglio è quando apro 3 schede in 3 diversi browser in modalità in incognito che vorrei visualizzare "3". Quando un nuovo utente si connette, vorrei che il numero aumentasse. Se un utente si disconnette, il numero dovrebbe diminuire.
mio PokerChannel
:
class PokerChannel < ApplicationCable::Channel
def subscribed
stream_from 'poker'
end
end
app/assets/javascripts/poker.coffee
:
App.poker = App.cable.subscriptions.create 'PokerChannel',
received: (data) ->
$('#votes').append @renderMessage(data)
renderMessage: (data) ->
"<p><b>[#{data.username}]:</b> #{data.vote}</p>"
Si noti che questo è il numero corrente di connessione per il * thread specifico * questo è chiamato, non il numero di connessioni su vari processi e thread – edwardmp
È anche il numero di connessioni al server, non a un canale specifico . – Matt