我有一个典型的web api控制器,它是从jscript客户端调用的。在服务器处理请求期间,我想向一组信号器客户端发送消息,除了与当前web api http请求对应的客户端。
如何在信号器上下文不可用时获取该连接ID? 当然,我可以让客户端使用http请求的其余参数显式发送它,但我想知道是否有更优雅的方式。
答案 0 :(得分:3)
没有更优雅的方式。连接ID存储在客户端上,通常随信号器客户端发出的每个请求都会被传递。
答案 1 :(得分:0)
如果您实现了它,我已经创建了一个库,用于使后端服务总线和SignalR之间的差距更加无缝。您可以通过WebApi方法
这样做eventAggregator.Publish(new MyEvent(data));
和MyEvent
public class MyEvent : Event
{
public MyEvent(Data data)
{
this.PerformedBy = Thread.CurrentPrincipal.Identity.Name;
}
}
然后为该事件
创建一个Constraint处理程序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
请注意,属于该用户的所有客户都不会获得该活动