从控制器Asp.Net Core SignalR发送消息

时间:2018-07-17 14:32:00

标签: .net asp.net-core .net-core signalr asp.net-core-signalr

任何人都可以共享在哪里描述正确使用IHubContext的链接吗?因为我只是混淆了如果可以直接从控制器发送消息的NotificationHub的目的是什么?

col1|col2|col3 |col4
A1  | 3  |  B1 | 5
A1  | 4  |  C1 | 8
A2  | 2  |  B1 | null

我从控制器中调用的内容:

#standardSQL
select A.col1, A.col2, A.col3, sum(B.col3) as col4
from `Table 1` as A
left join `Table 2` as B
on A.col1 = B.col1
where B.col2 > A.col2 and B.col2 <= A.col2+7
group by 1,2,3

其中 public class NotificationHub : Hub { public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); } } 类型的hubcontext

从控制器发送消息的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

  

任何人都可以共享链接,在其中描述如何正确使用IHubContext吗?

https://docs.microsoft.com/en-us/aspnet/core/signalr/hubcontext?view=aspnetcore-2.1

在您的示例代码中,用户ID是什么? Client.Client用于SignalR连接ID。发送给特定用户(Clients.User)时要使用UserId

  

因为我只是困惑我可以直接从控制器发送消息的NotificationHub的目的?

如果您不想使用控制器,则可以使用集线器来输入数据。如果要支持纯HTTP API,则可以使用控制器。如果要使用WebSocket(或SignalR支持的其他传输方式)来接收传入的数据,则可以使用集线器。

它对于处理诸如OnConnectedAsync和OnDisconnectedAsync之类的连接生存期事件也很有用。这样,您可以在特定连接连接或断开连接时执行操作。