在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
我整个下午都在担心这个问题。一切都准备放弃了,刚躺在床上,脑子里就闪出了一个解决办法! ! !登录以分享
class BoardChannel < ApplicationCable::Channel
def subscribed
stream_from "board:#{params[:board]}"
stream_from "global_stream"
end
end
然后,当您想要广播所有用户时,您可以:
ActionCable.server.broadcast "global_stream", "some messages"
当然,你也可以向特殊用户广播。你可以:
ActionCable.server.broadcast "board:#{params[:board]}", "some messages"
完美的!!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)