首页 > 解决方案 > 在 react-native 中离开屏幕时,我应该如何断开与 signalR 的连接

问题描述

在我的应用程序中,我有几个使用 signalR 这样的屏幕。该函数称为 useEffect 函数,它可以工作:

const setupSignalR = () =>
{
    SecureStore.getItemAsync("token").then(tk => {
            let connection = new HubConnectionBuilder()
            .withUrl("URL", {
            accessTokenFactory: () => tk
            })
            .build();

            connection.on("Update", function (message) {
             //DOSTUFF
            });

            connection.start()
            .then(() => console.log("connection started"))
            .catch(err => console.log("connecting hub failed err is : ", err));
    });
}

问题是,如果我离开屏幕,连接保持打开状态,当我返回屏幕时,我会打开另一个连接,这意味着我现在同时打开了 2 个连接。我知道 signalR 有一个可以调用的停止函数,所以我尝试使用这样的导航侦听器,但没有调用它们:

useEffect(() => 
{
    Load();
    setupSignalR();
    const unsubscribe = navigation.addListener('focus', () => {
        
      });
    const sub = navigation.addListener('blur', () => {
        console.log("============");
    });
}, [navigation]);

我通常通过按后退按钮或使用navigation.navigate();

标签: react-nativesignalr

解决方案


return () => {
    connection.stop();
}

作品。


推荐阅读