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

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

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

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

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

方法#

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

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

注意点#

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

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