1
我有一個頻道,當您連接到它時,它會在後端執行一些操作。一旦後端工作完成,我需要發回應答。 這裏是我的頻道:另一個模塊的Elixir/Phoenix Endpoint廣播
def join("boot", _, socket) do
Launcher.start()
{:ok, socket}
end
def handle_in("boot:fetch", params, socket) do
payload = %{total_reports: 5}
{:reply, {:ok, payload}, socket}
end
而且Launcher
模塊:
defmodule App.Launcher do
alias App.Endpoint
def start() do
Endpoint.broadcast! "boot", "test:my", %{total_reports: 541}
end
end
我預計在test:my
首先接收%{total_reports: 541}
,然後在前端boot:fetch
%{total_reports: 5}
。但我只收到來自boot:fetch
的數據而不是test:my
。
Endpoint.broadcast
from Launcher
模塊沒有廣播任何東西。它預期的行爲?爲什麼我不能通過頻道別名模塊進行廣播?
此外,我測試了把完全相同的線路放在頻道中,它的工作原理。出於某種原因,我不能只用其他模塊來做。這個例子的工作原理:在加入頻道時
def handle_in("boot:fetch", params, socket) do
payload = %{total_reports: 5}
Endpoint.broadcast! "boot", "test:my", %{total_reports: 541}
{:reply, {:ok, payload}, socket}
end