【发布时间】:2015-12-30 13:13:49
【问题描述】:
我正在尝试使用 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”。当一个新用户连接时,我希望这个数字增加。如果任何用户断开连接,则该数字应递减。
我的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>"
【问题讨论】:
标签: ruby-on-rails websocket actioncable