我有一个频道,当你连接到它时,它会在后端做一些事情。后端作业完成后,我需要发回响应。这是我的频道:
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
我希望先在前端接收%{total_reports: 541}
,test:my
然后再%{total_reports: 5}
在boot:fetch
前端接收。但我只接收来自boot:fetch
而不是接收数据test:my
。
Endpoint.broadcast
fromLauncher
模块没有广播任何内容。这是预期的行为吗?为什么我不能从频道别名的模块广播?
此外,我已经测试过将完全相同的线路放入通道中,并且它可以工作。出于某种原因,我不能只使用其他模块来做到这一点。这个例子有效:
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