任何人都可以共享在哪里描述正确使用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
从控制器发送消息的正确方法是什么?
答案 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之类的连接生存期事件也很有用。这样,您可以在特定连接连接或断开连接时执行操作。