代码之家  ›  专栏  ›  技术社区  ›  Rahele Nazari

注销时关闭WebSocket连接

  •  0
  • Rahele Nazari  · 技术社区  · 3 年前

    我正在开发一个React应用程序,在那里我有一个访问提供商来管理用户身份验证和授权,我还使用ActionCable库进行WebSocket通信。

    我面临一个问题:

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

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

    // ... (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>
      );
    }
    
    0 回复  |  直到 3 年前