私はチャンネルを持っています。これは接続時にバックエンドで何かをします。バックエンドの仕事が完了したら、私は応答を返す必要があります。ここ は私のチャンネルです:エリクシール/フェニックス別のモジュールからブロードキャストされたエンドポイント
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
私が最初にフロントエンドにboot:fetch
にtest:my
に%{total_reports: 541}
を受信し、%{total_reports: 5}
すると予想しました。しかし、私はboot:fetch
からのデータしか受信せず、test:my
ではない。
Endpoint.broadcast
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