2012-10-15 88 views

回答

5

現在與SignalR您可以使用

Clients.OthersInGroup("foo").send(message); 

這確實你是什麼之後。它將發送一個SignalR客戶端消息給除呼叫者外的一個組中的每個人。

你可以在這裏閱讀更多:SignalR wiki Hubs

5

你可以在這裏做的是你可以發送ConnectionId到客戶端並檢查。例如,下面的人是你的集線器:

[HubName("moveShape")] 
public class MoveShapeHub : Hub 
{ 
    public void MoveShape(double x, double y) 
    { 
     Clients.shapeMoved(Context.ConnectionId, x, y); 
    } 
} 

在客戶端級別,你可以做到以下幾點:

var hub = $.connection.moveShape, 
    $shape = $("#shape"), 
    $clientCount = $("#clientCount"), 
    body = window.document.body; 

$.extend(hub, { 
    shapeMoved: function (cid, x, y) { 
     if ($.connection.hub.id !== cid) { 
      $shape.css({ 
       left: (body.clientWidth - $shape.width()) * x, 
       top: (body.clientHeight - $shape.height()) * y 
      }); 
     } 
    } 
}); 

編輯

從SignalR開始1.0.0-α ,如果您使用集線器,則有內置的API:

[HubName("moveShape")] 
public class MoveShapeHub : Hub 
{ 
    public void MoveShape(double x, double y) 
    { 
     Clients.Others.shapeMoved(x, y); 
    } 
} 

這將廣播除主叫方以外的每個人的數據。

+1

這是SignalR v0.5.3的唯一途徑。在下一個版本中,除了呼叫者或特定的ConnectionId以外,每個人都可以獲得廣播支持:https://github.com/SignalR/SignalR/issues/105 –

+0

@akoeplinger甜美!感謝分享! – tugberk

相關問題