Phoenix: websocketの使えない環境でLiveViewを使う

Published on 2020-07-18 00:00:00

例えば、Cloud Run(fully managed) ではwebsocketが使えません。 1
また、websocketを禁止しているプロキシサーバーがある場合も同様です。

このような環境でLiveViewを使うこと諦めていませんか?

実はwebsocketを使わなくてもLiveViewは動きます。そう、LongPoll設定を使えばね!

1

WebSockets and gRPC streaming support

方法

elixir forumLive view fallback with no websocket? でPhoenixの作者が 回答 しています。

../../../_images/liveview_with_longpoll.gif

注意点

ロングポーリング はその性質上、サーバープッシュを検知するためのリクエスト発行が定期または検知毎に発生します。

よって、リクエスト数はプッシュ頻度に応じ増えますし、検知の遅延はリクエストのオーバーヘッドに応じて発生するので注意が必要です。