2013-08-30 60 views
0

我有一個典型的Web API控制器,它是從jscript客戶端調用的。在服務器處理請求期間,我想向一組信號客戶端發送消息,除了與當前Web API請求對應的客戶端。在信號調用的上下文之外獲取信號連接ID

我該如何獲得該連接ID,那時signalr上下文不可用? 當然,我可以讓客戶端明確地發送它與http請求的其餘參數,但我想知道是否有更優雅的方式。

回答

3

沒有更優雅的方式。連接ID存儲在客戶端上,通常在每次使用signalr客戶端發出請求時傳遞。

0

我已經創建了一個庫,用於使後端服務總線和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

要注意的是屬於所有客戶端的用戶表示不會得到事件