我想使用动作电缆(第5条)创建聊天应用。
当客户端登录该应用程序时,我发送消息以订阅该频道。频道将根据current_user
的{{1}}流式传输以进行连接。
用户发送消息时,它将发送给所有订阅该频道的人
这是动作电缆的正常流动。
这是我的频道:
room_id
但是我不知道客户端何时将消息发送给不在房间的新用户。流未创建。对方如何接收消息并保持对话继续进行?
答案 0 :(得分:0)
对于正在发送消息的用户,您可以在消息模型中创建一个回调,该回调在创建消息时广播到您的频道。我假设您创建了正确的关联。即客房has_many
消息。依次发送的消息belongs_to
Room
和User
像这样:
class Message < ApplicationRecord
after_create :broadcast_to_room
.......
private
def broadcast_to_room
@room = self.room
RoomChannel.broadcast_to(@room, message: self)
end
.........
end
因此,无论何时创建一条消息,它都会广播到该消息所属的房间。 您的RoomChannel可以像这样:
class RoomChannel < ApplicationCable::Channel
def subscribed
room = Room.find(params[:id])
stream_for room
end
end
现在,在会议室的从头开始的页面中,您应该具有一个用于侦听传入消息的功能。因此,当收到一条消息时,您的听众会收到并显示消息。 我写了一个here要点,说明如何在客户端中使用actioncable(以react-native方式)。在您的客户端中,创建一个用于侦听传入消息的套接字。