How to intercept, in react-native, the signalR error 'Error: Server timeout elapsed without receiving a message from the server.'?

How to intercept, in react-native, the signalR error 'Error: Server timeout elapsed without receiving a message from the server.'?

我在 react-native 中使用包 @aspnet/signalr 来连接我的服务器。

在应用程序处于前台之前,一切正常,如果我在没有收到错误的情况下失去连接​​,我可以重新连接。

当我在后台长时间打开应用程序时,我可以立即重新连接到我的服务器,但我收到错误 Error: Connection disconnected with error 'Error: Server timeout elapsed without receiving a message from the server.'

如何拦截这个错误?

这是我的一段代码:

connection = new signalR.HubConnectionBuilder()
   .withUrl("http://192.168.xxx.xxx/notificationHub?userId=" + authInfo.userId)
   .build();
    
connection.on("receiveMessage", data => {
   console.log('*** MESSAGGIO RICEVUTO ***');
   Alert.alert(data);
});


                        
connection.start()
   .then(() => console.log("Connessione avvenuta"))
   .catch((err) => console.log(err);

connection.onclose()
   .then(() => connection.start(););

谢谢

Error: Connection disconnected with error 'Error: Server timeout elapsed without receiving a message from the server.'

serverTimeoutInMilliseconds 的默认超时值为 30,000 毫秒(30 秒),如果超过此超时时间仍未收到来自服务器的任何消息,连接可能会因上述错误而终止。

要解决此问题,请检查您是否只是更新了 SignalR 集线器的 KeepAliveInterval 设置,但没有更改客户端的 serverTimeoutInMilliseconds 值。

并且推荐的 serverTimeoutInMilliseconds 值是 KeepAliveInterval 值的两倍。

更新:

Is there a way to intercept this error and manage the error without warning?

如果您不希望 signalR 客户端在浏览器控制台选项卡中记录此错误,您可以尝试将 LogLevel 修改为 None

 .configureLogging(signalR.LogLevel.None)

然后管理 onclose 回调中的错误,如下所示。

connection.onclose(error => {
    //...

    console.log("Connection Disconnected");
});