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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Ruby相关文章