亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在控制器(ASP.NET Core)中進行 DI 時,如何使用 SignalR

在控制器(ASP.NET Core)中進行 DI 時,如何使用 SignalR

C#
德瑪西亞99 2023-08-20 09:48:01
我將 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.Othersby usingClients.AllExcept(...)或類似命令來獲得等效的效果。


查看完整回答
反對 回復 2023-08-20
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

MS 在沒有 CallingClinet 的情況下提供 IHuBContext 是毫無意義的。

總是有一個調用客戶端,獲得它的唯一方法是通過依賴注入。MS你真丟臉。


查看完整回答
反對 回復 2023-08-20
  • 2 回答
  • 0 關注
  • 146 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號