gpt4 book ai didi

javascript - SignalR:在调用方法之前等待重新建立连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:03 25 4
gpt4 key购买 nike

我有一个 HubProxy,其中包含许多客户端触发的方法,如下所述:

proxy.invoke('hub_Subscribe');
proxy.invoke('triggerOnServer');
proxy.invoke('dataToServer',someModel);

现在,如果 signalr 连接到服务器并且我尝试调用上述任何方法,它会给我 Connection must be started before data can be sent.在收到调用结果之前连接已断开。 错误。

我知道可以利用 connection.stateChanged 确认 signalR 是否已连接并相应地调用方法。但是需要记录这些事件,以便在信号器连接建立后可以调用它们。

那么,在连接断开的情况下,是否有一种简单的方法来记录这些方法?稍后一旦 signalR 连接启动并运行,调用那些方法?

类似proxy.invoke('dataToServer',someModel).WaitForSignalRToBeConnected();

注意:在客户端断开连接后,我使用 THIS 继续连接到服务器

最佳答案

我目前已经通过以下 promise 解决了这个问题:

function GetOpenConnection() {
return new Promise((resolve, reject) => {
const msMax = 1000;
const msInc = 10;

var ms = 0;

var idInterval = setInterval(() => {
if (connection.connectionState == 1) {
clearInterval(idInterval);
resolve(connection);
}

ms += msInc;

if (ms >= msMax) {
clearInterval(idInterval);
reject(connection);
}
}, msInc);
});
}

用法:

console.log('before GetOpenConnection()');
GetOpenConnection().then((connection) => {
console.log('Connected: ', connection.connectionState);
// invoke functions here
}).catch((connection) => {
console.log('Not connected: ', connection.connectionState);
});
console.log('after GetOpenConnection()');

关于javascript - SignalR:在调用方法之前等待重新建立连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35031570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com