【Elixir】Phoenix push_event を活用してJavaScriptを実行する
【Elixir】Phoenix push_event を活用してJavaScriptを実行する
ElixirのPhoenixフレームワークでは、サーバーからクライアントへのイベントをプッシュするためのpush_eventという機能が提供されています。
これを利用することで、サーバー側からクライント側のJavaScriptに対してイベントを発行し、特定の操作を行うことが可能になります。
push_event を活用してJavaScriptを実行してみます。
確認環境
- Elixir 1.14.2
- Phoenix 1.6.3
サーバーサイドのコード
まず、サーバーサイドで push_event を使用してイベントを発行します。
以下の例では、初期表示発の際に、"alert"というイベントをクライアントにプッシュしています。
defmodule SampleWeb.Live.Index do
use SampleWeb, :live_view
@impl true
def mount(_params, _session, socket) do
{
:ok,
|> push_event("alert", %{msg: "テスト"})
}
end
end
クライアントサイドのコード
次に、クライアントサイドでpush_eventから発行されたイベントを受け取ります。
以下のJavaScriptコードは、"alert"イベントを受け取ったときに、メッセージを表示します。
let liveSocket = new LiveSocket(...);
window.addEventListener(`phx:alert`, (e) => {
alert(e.detail.msg)
})
このように、Phoenixのpush_eventを使用することで、サーバーからクライアントへの通信が可能になります。