我將 SignalR 與 ASP.NET Core 結合使用:public class NotificationHub : Hub{}[Route("api/[controller]")][ApiController]public class AController : ControllerBase{ private readonly IHubContext<NotificationHub> _hubContext; public AController(IHubContext<NotificationHub> hubContext) { _hubContext = hubContext; }}我發現我只能使用屬性Clients.Caller和Clients.Otherspublic class NotificationHub : Hub{ public void Test() { Clients.Caller.SendAsync("aMethod"); Clients.Others.SendAsync("aMethod"); }}雖然IHubContext<NotificationHub>我只能訪問:_hubContext.Clients.All有什么方法可以訪問中心外的資源Clients.Caller并獲取其屬性嗎?Clients.Others
2 回答

慕容708150
TA貢獻1831條經驗 獲得超4個贊
您的 SignalR 客戶端僅與集線器通信,因此控制器中永遠不會有“調用者”,而僅在集線器中。
您傳遞給控制器的 HubContext 可用于將消息發送回任何已注冊的連接,方法是廣播到所有連接 ID 或選定的一組連接 ID。
因此,如果您可以將控制器用戶與連接 ID 相匹配,則可以Clients.Caller
通過發出 aClients.Client("connection-id")
和 a Clients.Others
by usingClients.AllExcept(...)
或類似命令來獲得等效的效果。

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
MS 在沒有 CallingClinet 的情況下提供 IHuBContext 是毫無意義的。
總是有一個調用客戶端,獲得它的唯一方法是通過依賴注入。MS你真丟臉。
- 2 回答
- 0 關注
- 146 瀏覽
添加回答
舉報
0/150
提交
取消