0

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

在信号器上下文不可用的那一刻,我如何获得该连接 ID?当然,我可以让客户端使用 http 请求的其余参数显式发送它,但我想知道是否有更优雅的方式。

4

2 回答 2

3

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

于 2013-08-30T17:33:24.887 回答
0

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

eventAggregator.Publish(new MyEvent(data));

还有我的事件

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

请注意,属于该用户的所有客户端都不会收到该事件

于 2013-08-30T19:46:45.130 回答