จะถ่ายทอดข้อความจาก Phoenix Controller ไปยัง Channel ได้อย่างไร?

มีวิธีถ่ายทอดข้อความไปยังช่องจากภายนอกช่องนั้นหรือไม่?

อาจมีบางอย่างเช่น 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
@BorisBarroso คุณต้องทำ iex -S mix phoenix.server เพื่อให้แน่ใจว่า Pheonix เริ่มทำงานด้วย คุณไม่สามารถออกอากาศได้หากคุณเพียง iex -S mix เนื่องจากไม่ได้เริ่มเซิร์ฟเวอร์ - person ankush981; 08.09.2016
comment
ขอบคุณ @Gazler! ฉันไม่รู้เรื่องนี้ และฉันก็แทบจะบ้าไปแล้วเมื่อพยายามส่งข้อความจาก iex! - person jacklin; 26.10.2016
comment
ในตัวอย่างที่แตกต่างกัน บางครั้งอาจเป็น room:lobby และบางครั้งก็ rooms:lobby เป็นการยากที่จะมองเห็นความแตกต่าง และการออกอากาศก็ไม่ได้ผล จึงไม่มีวิธีง่ายๆ ในการแก้ไข - person denis.peplin; 15.11.2018