我正在开发一个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>
);
}