Phoenix サーバーとライブ通信を行う Javascript クライアント アプリを構築しており、サーバーにプッシュされたメッセージが受信されたかどうかを知りたいと考えています。Phoenixのsocket.jsが次のようなものを使用することを望んでいるようです:
channel.push("mymessage", {data: 123})
.receive("ok", function(){ console.log("Message pushed successfully"); });
ただし、次のように、Phoenix アプリの戻り値を に変更しない限り、このイベント ハンドラーを起動することはできません{:reply, :ok, socket}
。
def handle_in("mymessage", %{"data" => data} = payload, socket) do
{:reply, :ok, socket}
# not {:noreply, socket}
end
クライアントに応答して実際にメッセージを送信しないのは理にかなっていると思い{:noreply, socket}
ますが、どのような場合にサーバーにメッセージを送信し、それが機能したことを知らせたくないのでしょうか? それとも私は何かを誤解していますか?通常のHTTPリクエストでは、クライアントからのリクエストが成功したかどうかを常に確認するように感じます。