Guardian を使用してトークンを生成し、Phoenix Channels のソケットに接続する際の認証に使用します。
最近、一部のユーザーが特定のページから離れず、約 1 か月後にトークンが無効になり、Phoenix Channels の接続試行が無効になることがわかりました。
クライアント側でそのようなケースをどのように処理しますか? フロントエンドに理由を知らせるために Phoenix から返される特定のエラーはありますか? connect
の関数はuser_socket.ex
次のようになります。
def connect(%{"guardian_token" => token}, socket) do
case Guardian.Phoenix.Socket.authenticate(socket, MyApp.Guardian, token) do
{:ok, authed_socket} ->
{:ok, authed_socket}
{:error, _} ->
:error
end
end
Phoenix Channels の Phoenix JS ライブラリを使用してこのエラーをキャプチャする方法はありますか? 私たちの目標は、1) トークンの有効期限が切れた場合に再試行を停止すること、2) ユーザーをログアウトするか、ユーザーがオフラインであるというメッセージを表示することです。Phoenix JS のドキュメントを確認しましたが、適切なものが見つかりませんでした。