pmi*_*hna 15 ruby-on-rails websocket actioncable
我正在尝试使用Action Cable创建一个简单的类似聊天的应用程序(计划扑克应用程序).我对术语,文件层次结构以及回调的工作方式感到有些困惑.
这是创建用户会话的操作:
class SessionsController < ApplicationController
def create
cookies.signed[:username] = params[:session][:username]
redirect_to votes_path
end
end
Run Code Online (Sandbox Code Playgroud)
然后,用户可以发布应该向所有人广播的投票:
class VotesController < ApplicationController
def create
ActionCable.server.broadcast 'poker',
vote: params[:vote][:body],
username: cookies.signed[:username]
head :ok
end
end
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很清楚,并且工作正常.问题是 - 如何显示已连接用户的数量?当用户(消费者?)连接时,JS中是否会触发回调?我想要的是当我在隐身模式下在3个不同浏览器中打开3个标签时,我想显示"3".当新用户连接时,我希望该数字递增.如果任何用户断开连接,则该号码应减少.
我的PokerChannel:
class PokerChannel < ApplicationCable::Channel
def subscribed
stream_from 'poker'
end
end
Run Code Online (Sandbox Code Playgroud)
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>"
Run Code Online (Sandbox Code Playgroud)
pmi*_*hna 16
似乎只有一种方法可以使用
ActionCable.server.connections.length
Run Code Online (Sandbox Code Playgroud)
(参见评论中的警告)
| 归档时间: |
|
| 查看次数: |
5595 次 |
| 最近记录: |