我正在尝试在新的dotnet core2.1中使用signalR。我已经设置好了我的C#服务器,并准备好一个ionic 3应用程序作为客户端。我成功地建立了它们之间的websocket连接。但是,当我尝试从服务器向客户端使用SendAsync时,客户端显示为空,即使已经成功建立连接。
我进行了一些测试,甚至尝试使用OnConnectedAsync覆盖来查看发生了什么。它确实触发了,但是context.user.identity.name为空,客户端仍然为空。
我进行了一些测试,甚至尝试使用OnConnectedAsync覆盖来查看发生了什么。它确实触发了,但是context.user.identity.name为空,客户端仍然为空。
在浏览器日志中:
Information: WebSocket connected to ws://localhost:xxxx/myHub
在我的Hub中
public async Task Send(string message)
{
await Clients.All.SendAsync("SendMessage", message);
}
在控制器中
public async Task<IActionResult> NewBuild()
{
await myHub.Send("New Build Completed.");
return Ok();
}
在我的创业公司
services.AddCors(options => options.AddPolicy("CorsPolicy",
builder =>
{
builder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials();
}));
services.AddSignalR();
app.UseCors("CorsPolicy");
app.UseSignalR(routes =>
{
routes.MapHub<myHub>("myHub");
});
在Ionic中
hubConnection: HubConnection;
this.hubConnection = new HubConnection('http://localhost:xxxx/myHub', {
transport: TransportType.WebSockets
});
this.hubConnection.on("SendMessage", () => {
this.InitTodayBuilds();
});
this.hubConnection.start().catch(() => console.error);
就像我说的那样,似乎连接很好。但是当调用Send方法时,会出现空异常。
我在这里漏了什么愚蠢的东西吗? 感谢任何帮助!