我们使用 Guardian 生成令牌,然后在连接到 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 频道的 Phoenix JS 库捕获此错误?我们的目标是 1)在令牌过期时阻止它重试,2)可能注销用户或显示用户离线的消息。我们检查了Phoenix JS 的文档,但找不到任何合适的。