【发布时间】:2016-12-17 22:58:00
【问题描述】:
在 socket.io 中,您可以向除发送者以外的所有客户端发送消息,例如:
socket.broadcast.emit('user connected');
但是在 rails/actioncable 中,该怎么做呢?
class BoardChannel < ApplicationCable::Channel
def subscribed
stream_from "board:#{params[:board]}"
end
def speak
# client will call @perform('speak')
result = do_something()
# how to send 'result' to all client except sender?
end
end
【问题讨论】:
-
在plezi.io 上,您可以使用
#broadcastmethod 执行此操作,我认为Rails 会有类似的东西,可能称为publish...但我不确定。 -
这里的情况相同。在前端管理了一个解决方法,但我不喜欢这个解决方案。那里的每个示例(包括文档)都假定发送者应该收到他发送的事件。后端的另一种解决方法是传递发送方套接字 id、拉取客户端、删除发送方,然后使用循环手动向每个客户端广播。
-
您是否尝试过为每个用户使用不同的广播名称?像
stream_from "board:#{params[:board]}:#{user.id}"这样的东西。然后每个用户都会获得自己的流,您可以通过循环将其广播给应该接收它的特定用户。 -
从此没有解决方案?
标签: ruby-on-rails ruby websocket actioncable