SignalR集线器连接StateChanged无法正常工作的客户端

时间:2019-12-27 20:54:17

标签: .net asp.net-core signalr

使用.net Core,并使用本教程https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-3.1&tabs=visual-studio进行了所有设置。

我希望能够根据本教程使用生命周期事件:https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client

但是我得到了

  

connection.stateChanged或connection.disconnected不是函数

var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();
connection.start().then(function () {
}).catch(function (err) {
    return console.error(err.toString());
});

connection.stateChanged(function () {
    console.log('in');
});

即使在客户端上,我也想检测到“ 已断开连接”。

1 个答案:

答案 0 :(得分:1)

HubConnectionState的MS Doc来看,只有两种状态:

  • 已断开连接
  • 已连接

这些状态通过连接中的state属性公开,但是没有其他任何状态。

根据this github issue中anurse的说法,start Promise可以让您知道连接何时开始,而closed事件则可以告诉您连接已停止。它们没有自动重新连接,因此这是唯一的状态转换。

因此您可以使用上面Dennis1679所说的以下方法

connection.onclose(function(){
    console.log('connecition closed');
});