ruby-on-rails – ActionCable – 如何显示已连接用户的数量?

我试图用Action Cable创建一个简单的聊天应用程序(规划扑克应用程序).我有点混淆了术语,文件层次结构以及回调的工作原理.

这是创建用户会话的操作:

class SessionsController < ApplicationController
  def create
    cookies.signed[:username] = params[:session][:username]
    redirect_to Votes_path
  end
end

然后,用户可以发布应该向所有人广播的投票:

class VotesController < ApplicationController
  def create
    ActionCable.server.broadcast 'poker',Vote: params[:Vote][:body],username: cookies.signed[:username]
    head :ok
  end
end

到目前为止,一切都对我来说很清楚,工作正常.问题是 – 如何显示已连接用户数量?当用户(消费者?)连接时,JS中是否有回调?我想要的是当我在无痕模式下在3种不同浏览器中打开3个标签时,我想显示“3”.当新用户连接时,我想要增加数字.如果任何用户断开连接,则数字应该递减.

我的扑克频道:

class PokerChannel < ApplicationCable::Channel
  def subscribed
    stream_from 'poker'
  end
end

应用程序/资产/ Java脚本/ 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>"

解决方法

似乎有一种方法是使用
ActionCable.server.connections.length

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...