我正在用Asp.Net Core&信号R。数据本身并不位于Asp.Net Core上,但必须向其他一些设备请求,这些设备将数据发送到Asp.Net核心服务器,然后服务器必须通过web套接字将数据返回给客户端。
我想对OnConnectedAsync
做出反应,请求我的设备定期向Asp.Net Core发送一些数据。
但这意味着我的集线器必须能够知道我需要查询哪些数据。
因此,我希望有一个集线器响应url/api/data/{id}
,并且在我的集线器中,能够知道请求了哪个ID。
app.MapHub<NotificationsHub>("/api/data/{id}");
id
识别一大组数据(请求并作为批量存储(,多个客户端将请求相同的ID。
我在文档中找不到:
- 如果可能
- 我应该如何指定ID参数
- 如何在集线器中检索此ID
如果有人有指针,那会很有帮助,非常感谢
您可以将参数作为查询字符串参数传递。从连接url传递id:
_hubConnection = new HubConnectionBuilder()
.WithUrl("/api/data?id=123")
.Build();
然后在集线器内读取:
public override async Task OnConnectedAsync()
{
string id = Context.GetHttpContext().Request.Query["id"];
var connectionId = Context.ConnectionId;
await Groups.AddToGroupAsync(connectionId, id);
await base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception exception)
{
string id = Context.GetHttpContext().Request.Query["id"];
var connectionId = Context.ConnectionId
await Groups.RemoveFromGroupAsync(connectionId, id);
await base.OnDisconnectedAsync(exception);
}
发送数据:
_hubContext.Group("123").SomeMethod(dataBatch);
地图中枢:
app.MapHub<NotificationsHub>("/api/data")