注销时关闭 WebSocket 连接

Close WebSocket connection on logout

提问人:Rahele Nazari 提问时间:8/27/2023 更新时间:8/27/2023 访问量:54

问:

我正在开发一个 React 应用程序,其中我有一个访问提供程序来管理用户身份验证和授权,并且我还使用 Action Cable 库进行 WebSocket 通信。

我面临一个问题:

  • 注销时关闭 WebSocket 连接:我不确定在用户注销应用程序时关闭 WebSocket 连接的最佳做法。 目前,我有一个处理用户身份验证的 AccessProvider 组件和一个在注销时触发的 logoutUser 函数。在这种情况下,如何正确关闭 WebSocket 连接? (我将 AccessProvider 放在 ActioncableProvider 中,这样我就可以在那里调用 useActioncableContext,然后在用户注销时断开连接。但是,我意识到,当用户未通过身份验证时,会被重定向到登录页面,登录...然后 ActioncableProvider 保留配置了空/无效令牌的消费者实例)

这是我的代码的简化版本供参考:

// ... (other imports and code)

function AccessProvider() {
  // ... (authentication logic)

  return (
    <AccessContext.Provider value={...}>
      {/* Render ActioncableProvider only when authorized */}
      {user.isAuthorized && <ActioncableProvider />}
      <Outlet />
    </AccessContext.Provider>
  );
}

以及处理实时更新的 ActioncableProvider 组件:

// ... (other imports and code)

function ActioncableProvider() {
  // ... (Actioncable logic)

  return (
    <ActioncableContext.Provider value={...}>
      <Outlet />
    </ActioncableContext.Provider>
  );
}
ReactJS Websocket 操作电缆

评论


答: 暂无答案