我正在使用 Asp.Net Core 和 SignalR 構建后端。資料本身并不位于 Asp.Net Core 上,而是必須向其他一些設備請求,這些設備會將資料發送到 Asp.Net Core 服務器,然后服務器必須通過 web 套接字將它們回傳給客戶端.
我想OnConnectedAsync對請求我的設備定期向 Asp.Net Core 發送一些資料做出反應。
但這意味著我的集線器必須能夠知道我需要查詢哪些資料。
因此,我希望有一個回應 url/api/data/{id}的集線器,并且在我的集線器中,能夠知道請求了哪個 ID。
app.MapHub<NotificationsHub>("/api/data/{id}");
識別一大id組資料(作為批量請求和轉發),多個客戶端將請求相同的 ID。
我在檔案中找不到:
- 如果這是可能的
- 我應該如何指定 ID 引數?
- 如何在集線器中檢索此 ID?
如果有人能指點一下,那會很有幫助,非常感謝
uj5u.com熱心網友回復:
您可以將引數作為查詢字串引數傳遞。從連接 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")
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/503939.html
標籤:C# asp.net 核心 网络套接字 信号器 信号集线器
上一篇:拋出例外:System.Data.dll中的“System.Data.SqlClient.SqlException”附加資訊:將資料型別varchar轉換為bigint時出錯。在C#中
