Rails的ActionCable发消息给某个用户和全体广播的方法

Rails的action cable使得用websocket推送变得特别容易实现。

但一直以为有个小需求没有想明白如何实现,有时想私发给某个用户消息,有时又想给所有用户发消息。

俗话说念念不忘必有回响,直到有一天,准备放弃了,突然想到了实现方法。

Action cable是按channel来通信的。那要同时满足这两个条件,只需要建立2条通道,一条是个人通道,一条是广播通道。这样就满足了这两个需求。

1
2
3
4
5
6
class CoinfarmDataChannel < ApplicationCable::Channel
def subscribe
stream_from "coinfarm_data_#{params[:id]}"
stream_from "coinfarm_data"
end
end