Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Azure服务总线事件处理程序访问信号器连接_Azure_Azureservicebus_Asp.net Core Signalr - Fatal编程技术网

如何从Azure服务总线事件处理程序访问信号器连接

如何从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

我在.NETCore2.1.4WebAPI中有一个服务总线事件处理程序,用于侦听和处理事件。当它接收到一个事件时,我希望它从负载中获取一个用户ID,并为该用户向所有连接的SignalR客户端发送一条消息

如何从服务总线处理程序访问信号器连接

事件处理程序

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调用,这是一个不应该执行的示例。这样的阻塞将停止所有其他对集线器本身的传入呼叫。是的,我同意,我已删除了您在第二条评论中提到的循环-我已将其标记为过时,但没有必要保留它。循环的原因是回购协议没有身份验证,所以我无法使用。用户们,也许我遗漏了什么,我会再看一看