如何从Azure服务总线事件处理程序访问信号器连接
我在.NETCore2.1.4WebAPI中有一个服务总线事件处理程序,用于侦听和处理事件。当它接收到一个事件时,我希望它从负载中获取一个用户ID,并为该用户向所有连接的SignalR客户端发送一条消息 如何从服务总线处理程序访问信号器连接 事件处理程序如何从Azure服务总线事件处理程序访问信号器连接,azure,azureservicebus,asp.net-core-signalr,Azure,Azureservicebus,Asp.net Core Signalr,我在.NETCore2.1.4WebAPI中有一个服务总线事件处理程序,用于侦听和处理事件。当它接收到一个事件时,我希望它从负载中获取一个用户ID,并为该用户向所有连接的SignalR客户端发送一条消息 如何从服务总线处理程序访问信号器连接 事件处理程序 private async static Task ProcessMessagesAsync(Message message, CancellationToken token) { var receivedObject = JsonCo
private async static Task ProcessMessagesAsync(Message message, CancellationToken token)
{
var receivedObject = JsonConvert.DeserializeObject<MyType>(Encoding.UTF8.GetString(message.Body));
await _repository.Add(receivedObject);
// Send something to all SignalR connections for the user ID in receivedObject
}
private异步静态任务流程messagesasync(消息消息,取消令牌)
{
var receivedObject=JsonConvert.DeserializeObject(Encoding.UTF8.GetString(message.Body));
wait_repository.Add(receivedObject);
//向receivedObject中用户ID的所有信号器连接发送内容
}
不要通过Program.cs连接事件侦听器,而应该使用。一旦你这样做,你的IHostedService将被DI激活,你可以访问IHubContext你在哪里连接处理程序?事件侦听器代码:连接:我向你发送了一个拉请求。很好,这解除了我的阻止。我没有合并您的PR只是因为我提交了导致冲突的更改,所以我以您的更改为指导,并针对我的repo进行了一些调整(例如从连接映射检索连接ID,因为此repo没有身份验证),非常感谢!与setup readme一起使用repo解决了上述问题:为什么在这里循环而不是使用.User功能?此外,此方法会阻止hub调用,这是一个不应该执行的示例。这样的阻塞将停止所有其他对集线器本身的传入呼叫。是的,我同意,我已删除了您在第二条评论中提到的循环-我已将其标记为过时,但没有必要保留它。循环的原因是回购协议没有身份验证,所以我无法使用。用户们,也许我遗漏了什么,我会再看一看