Asp.net core 信令Asp.Net核心发送异步挂起
这是第二次了。我相信触发错误的原因是我试图更新我的MongoDb服务器,但我仍然不知道为什么会发生这种情况,我想找出原因 基本上,我使用以下命令将json字符串数据从C#脚本发送到带有Signalr的前端:Asp.net core 信令Asp.Net核心发送异步挂起,asp.net-core,signalr,signalr-hub,signalr.client,asp.net-core-signalr,Asp.net Core,Signalr,Signalr Hub,Signalr.client,Asp.net Core Signalr,这是第二次了。我相信触发错误的原因是我试图更新我的MongoDb服务器,但我仍然不知道为什么会发生这种情况,我想找出原因 基本上,我使用以下命令将json字符串数据从C#脚本发送到带有Signalr的前端: \u hubContext.Clients.All.SendAsync(“ReceiveMail”,json); 问题是,我的脚本一直在广播此消息(没有任何错误或问题),但我的客户端没有收到它(即使此广播已运行数周…)。当我将广播的名称更改为其他名称时,数据就会完美地传送到客户端 例如:
\u hubContext.Clients.All.SendAsync(“ReceiveMail”,json);
问题是,我的脚本一直在广播此消息(没有任何错误或问题),但我的客户端没有收到它(即使此广播已运行数周…)。当我将广播的名称更改为其他名称时,数据就会完美地传送到客户端
例如:
//此广播连续几周运行良好,但突然停止运行(无错误)
_hubContext.Clients.All.SendAsync(“ReceiveMail”,json);
//将上面的广播更改为此,广播再次运行良好
_hubContext.Clients.All.SendAsync(“ListenForMail”,json);
TS代码:
constructor(){
this.hubConnection=new signal.HubConnectionBuilder()
.withUrl('http://localhost:57697/chat')
.build();
这是hubConnection
.start()
.然后(()=>this.table())
.catch(err=>console.log('建立连接时出错:(');
this.hubConnection.on('ReceiveMail',(mailJson:string)=>{
this.loadEmail(mailJson);
});
this.hubConnection.on('ReceiveConnection',(msg:string)=>{
log('Connection:'+msg);
});
}
有人了解这个问题吗?C代码正在调用的方法名称与您在TS代码中侦听的方法不匹配-但我假设这是一个输入错误。如果不是,那么您需要确保。on
方法使用与C代码相同的方法名称
您需要更改的另一件事是连接的起始位置,例如
constructor(){
this.hubConnection=new signal.HubConnectionBuilder()
.withUrl('http://localhost:57697/chat')
.build();
this.hubConnection.on('RetrieveMail',(mailJson:string)=>{
this.loadEmail(mailJson);
});
this.hubConnection.on('ReceiveConnection',(msg:string)=>{
log('Connection:'+msg);
});
这是hubConnection
.start()
.然后(()=>this.table())
.catch(err=>console.log('建立连接时出错:(');
}
在上面的代码中,我移动了
.start()
在注册方法上的后调用。您应该这样做,因为hubconnection
可以在注册处理程序之前开始侦听消息,从而导致竞态条件。如果
上的处理程序尚未完成注册,则不会收到发送的任何消息。您可以发布您的JS代码吗s正在侦听消息,请?@SimplyGed已用TS代码更新抱歉,不是一个输入错误,我刚刚多次更改名称以修复错误。在TS和C#脚本中,该函数将命名为“RetrieveMail”、“ReceiveMail”或“ListenForMail”。好的,谢谢。注册“on”后,我将尝试启动连接就像你说的那样!