ActionCable: один канал на пользователя

Я работаю над уведомлениями для своего приложения rails. Существует модель пользователя и контроллер, а модель «Нравится», связанная с пользователем, имеет много ассоциаций «Нравится».

Идея в том, что если пользователю нравится профиль другого пользователя, владелец профиля получит живое уведомление.

Это мое приложение для понимания ActionCable. Я изучил кабельный API, pub-sub был для меня новым. Мне удалось установить успешную связь через один канал, а также успешно использовать авторизация. Но все же я не понимаю, как использовать один канал для каждого пользователя (динамически генерируемый канал), чтобы сообщение, отправленное одному пользователю, не переходило к другому пользователю.

Возможен ли динамический канал?

Или есть другие способы, когда один канал удовлетворяет все потребности пользователей?


person Will    schedule 19.05.2016    source источник
comment
Динамически генерируемый канал? Что ты имеешь в виду? Отдельное подключение к любым пользователям?   -  person Зелёный    schedule 19.05.2016
comment
@ Зеленый Я просто подумал, есть ли какой-нибудь стандартный способ сделать это. В ApplicationCable::Channel можно предоставить сгенерированные имена каналов с интерполяцией строк, как это stream_from "x_channel_#{user_id}" , также для вещания ActionCable.server.broadcast "x_channel_#{user_id}", message: "Received"   -  person Will    schedule 19.05.2016
comment
@Зеленый да, отдельное подключение для каждого пользователя   -  person Will    schedule 19.05.2016
comment
отдельное подключение - это не очень хорошая практика.   -  person Зелёный    schedule 19.05.2016
comment
@Зеленый Пожалуйста, укажите способ   -  person Will    schedule 19.05.2016
comment
Ваш вопрос, вероятно, слишком широк. Мастер-классов много, можно найти в гугле.   -  person Зелёный    schedule 19.05.2016
comment
@Зеленый Я не нашел ответа, поэтому и задал вопрос. хорошо, а как сократить?   -  person Will    schedule 19.05.2016
comment
Прочтите перед как спросить   -  person Зелёный    schedule 19.05.2016


Ответы (1)


Решение было на самом деле простым, но некоторые новые термины, введенные в ActionCable, сделали его запутанным. Кстати, вот как я это решил.

Я использовал один канал, но несколько потоков для разных пользователей. Вот ссылка на документацию ActionCable, в которой четко указано очень похожий сценарий. Я просматривал документацию ранее, но как-то не понял ее с первого взгляда.

Извините, что не предоставил никакого прямого кода, я думаю, что документация объяснит это полностью.

person Will    schedule 19.05.2016