Для пользователя, отправляющего сообщение, вы можете создать обратный вызов в вашей модели сообщений, который будет транслироваться на ваш канал при создании сообщения.Я полагаю, вы создали правильные ассоциации.т.е. номера 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
Теперь на странице со стороны комнаты должна быть функция, которая подписывается на прослушивание входящих сообщений.Поэтому, когда приходит сообщение, ваш слушатель берет сообщение и отображает его.Я написал здесь о том, как вы можете использовать actioncable на клиенте (в реагировать на нативную).В вашем клиенте вы создаете сокет, который прослушивает входящие сообщения.