获取信号机调用上下文之外的信号机连接id



我有一个典型的web api控制器,它是从jscript客户端调用的。在服务器处理请求期间,我想向一组signaler客户端发送消息,但与当前web api http请求相对应的客户端除外。

在信号器上下文不可用的情况下,我如何获取连接id?当然,我可以让客户端显式地将其与http请求的其余参数一起发送,但我想知道是否有更优雅的方法。

没有比这更优雅的方式了。连接id存储在客户端上,通常会随signaler客户端发出的每个请求一起传递。

我已经创建了一个库,如果您实现了它,可以使后端服务总线和SignalR之间的间隙更加无缝。您可以通过WebApi方法这样做

eventAggregator.Publish(new MyEvent(data));

和MyEvent

public class MyEvent : Event 
{
   public MyEvent(Data data) 
   {
      this.PerformedBy = Thread.CurrentPrincipal.Identity.Name;
   }
}

然后为该事件创建一个约束处理程序

public class MyEventConstraint : EventConstraintHandler<Event>
{
   public bool Allow(MyEvent myEvent, username, dynamic constraint) 
   {
      return myEvent.PerformedBy != username;
   }
}

您也可以使MyEvent通用,这样您就可以将其用于所有实体

更多信息以及如何设置https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

注意,属于所述用户的所有客户端都不会获得事件

最新更新