Как передать сообщение с контроллера Phoenix на канал?

Есть ли способ передать сообщение на канал из-за пределов этого канала?

Может что-то вроде Channel.broadcast topic, event, data?

Я видел нечто подобное здесь, но окончательная версия Phoenix.Channel.broadcast/3 (на сегодняшний день) использует сокет, который подразумевает канал и тема.


person Philip Claren    schedule 27.11.2015    source источник


Ответы (1)


Вы можете использовать MyApp.Endpoint.broadcast(topic, event, msg) для этого.

Проверьте http://hexdocs.pm/phoenix/Phoenix.Endpoint.html.

person manukall    schedule 27.11.2015
comment
Обратите внимание, что если вы запускаете это из iex, вам нужно будет запустить приложение с iex -S mix phoenix.server, чтобы оно заработало. - person Gazler; 27.11.2015
comment
Это то, что я, вероятно, должен был найти сам :-) ... и я очень усердно гуглил, но этого не нашел. Может быть, это и к лучшему, что он сейчас здесь. - person Philip Claren; 27.11.2015
comment
Клонировал этот пример github.com/chrismccord/phoenix_chat_example и работает нормально, но если я войду в iex -S mix и затем запущу Чат Chat.Endpoint.broadcast "rooms:lobby", "new:msg", %{"user" => "Boris", "body" => "Tes msg"} не показывает сообщение в браузере - person Boris Barroso; 09.03.2016
comment
@BorisBarrso Вам нужно сделать iex -S mix phoenix.server, чтобы убедиться, что Pheonix также запускается. Вы не можете транслировать, если вы делаете только iex -S mix, потому что это не запускает сервер. - person ankush981; 08.09.2016
comment
Спасибо @Газлер! Я этого не знал и сходил с ума, пытаясь отправлять сообщения с iex! - person jacklin; 26.10.2016
comment
В разных примерах это иногда room:lobby, а иногда rooms:lobby. Разницу заметить сложно, а с ней трансляция просто не работает, простых способов отладки нет. - person denis.peplin; 15.11.2018