【发布时间】:2020-12-09 16:15:06
【问题描述】:
我正在使用带有 .Net Core 3.0 和 Angular 8 的信号器
public class ConnectionHub : Hub
{
public ConnectionHub()
{
}
public override async Task OnConnectedAsync()
{
//get userName, token and other stuff
await base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception exception)
{
await base.OnDisconnectedAsync(exception);
}
}
在startup.cs中添加:
app.UseSignalR(options =>
{
options.MapHub<ConnectionHub>("/ConnectionHub");
});
角度
//configure
private connection: any = new signalR.HubConnectionBuilder().withUrl("http://localhost:6002/ConnectionHub?userName='abc'")
.configureLogging(signalR.LogLevel.Information)
.build();
//start
this.connection.start()
我想访问在查询参数中发送的自定义数据,但在 OnConnectedAsync 中,上下文如下:
如何在 OnConnectedAsync() 方法中访问查询参数。
Documentation 说我可以使用 Context.Request,但在 OnConnectedAsync 中它说“HubCallerContext”不包含“请求”的定义
【问题讨论】:
-
您是否参考过在
Hub类的覆盖方法中使用异步?我找不到以这种方式进行操作的任何参考。Hub类似乎没有定义任何异步方法 docs.microsoft.com/en-us/previous-versions/aspnet/… 。我有一种感觉,你永远不会向基类返回任何东西,因此上下文中没有Request。文档显示需要返回对基类方法return base.OnConnected();的调用。 -
从您提供的示例来看,您实际上并没有覆盖
Hub类中的任何方法。除非我在文档或 API 参考中遗漏了一些东西。事实上,看起来不会有任何东西会被发送回客户端。我建议再次查看文档并检查 API 参考以查看Hub类中定义的方法,以便您可以正确覆盖它们并完成返回客户端的循环。
标签: .net-core signalr signalr-hub