Asp.net core connection.closed不是功能信号器

Asp.net core connection.closed不是功能信号器,asp.net-core,signalr,signalr.client,asp.net-core-signalr,Asp.net Core,Signalr,Signalr.client,Asp.net Core Signalr,我对signal中的关闭事件感到困惑。显然,关于如何称呼它有一些争论,例如,onClosed(),closed(),等等 在客户端的signar侦听器中,我试图实现此事件,但不断收到一个错误,表明它不是函数。我尝试了onClosed()和closed()。同样的错误。如何在客户端检测关闭的事件 const signalListener=()=>{ connection.on('new_message',message=>{ //处理传入消息。 //这很好用。 }) 连接已关闭(e=>{ //尝试

我对
signal
中的关闭事件感到困惑。显然,关于如何称呼它有一些争论,例如,
onClosed()
closed()
,等等

在客户端的
signar
侦听器中,我试图实现此事件,但不断收到一个错误,表明它不是函数。我尝试了
onClosed()
closed()
。同样的错误。如何在客户端检测关闭的事件

const signalListener=()=>{
connection.on('new_message',message=>{
//处理传入消息。
//这很好用。
})
连接已关闭(e=>{
//尝试重新启动连接,但由于收到错误,我从未到达此处
})
}
我做错了什么

以下是我如何开始连接:

export const signalstart=(令牌)=>{
connection=new signal.HubConnectionBuilder()
.withUrl(“/chat?access_token=“+token”)
.configureLogging(信号器.LogLevel.Information)
.build();
//设置连接超时
connection.servertimeoutinems=30000;
//启动连接
connection.start();
//调用侦听器
signalRListener();
}
最佳做法是调用
connection.start
connection.on
之后启动,以便在收到任何消息之前注册处理程序

export const signalstart=(令牌)=>{
const connection=new signal.HubConnectionBuilder()
.withUrl(“/chat?access_token=“+token”)
.configureLogging(信号器.LogLevel.Information)
.build();
//设置连接超时
connection.servertimeoutinems=30000;
//注册侦听器
//注册一个处理程序,该处理程序将在调用具有指定方法名称的中心方法时被调用。
connection.on('new_message',message=>{
//处理传入消息。
//这很好用。
});
//注册将在连接关闭时调用的处理程序。
connection.onclose(e=>{
// ...
});
//启动连接
connection.start();
};
参考文献


参考

是的,这是正确的解决方案,现在正在运行。正确的事件处理程序是
onclose()
而不是
onClosed()
onclose()
。更改了顺序,现在先注册处理程序。非常感谢你的帮助@Sam I包含了一个到HubConnection API的链接,因此您可以查看可用的成员。