2013-08-01 1 views
0

UI에 하나 이상의 표가 있고 signalR을 통해 업데이트하려고합니다. 일부 변경 사항이있는 경우 해당 그리드 만 업데이트하면 다른 그리드는 그대로 유지됩니다. 다른 그리드에 대해 다른 연결을 생성하고 그에 따라 각 클라이언트를 업데이트 할 수 있습니까? 다른 클라이언트에 대해서도 연결 ID를 유지해야합니다. 그래서이 시나리오를 찾는 데 가능한 방법이 있습니까 ?? 몇 가지 해결책이나 제안을 찾고 있습니다.SignalR에서 클라이언트마다 다른 연결을 생성 할 수 있습니까? 영구 연결

서버 측

public class RealTimeEndPoint : PersistentConnection 
{ 
    //Create array to maiantain connections 
    static List<string> connectedUserId = new List<string>(); 

    //Called when the first connection is made 
    protected override Task OnConnected(IRequest request, string connectionId) 
    { 
     return Connection.Broadcast("Connection " + connectionId + " connected"); 
    } 

    //Called when connection is disconnected 
    protected override Task OnDisconnected(IRequest request, string connectionId) 
    { 
     connectedUserId.Remove(connectionId + ":" + request.User.Identity.Name); 
     return Connection.Broadcast("Connection " + connectionId + " disconncted"); 
    } 

    //Sends a value to specified signal 
    protected override Task OnReceived(IRequest request, string connectionId, string data) 
    { 
     connectedUserId.Add(connectionId + ":" + request.User.Identity.Name); 
     return Connection.Send(connectionId, "Connection " + connectionId + " sent " + data); 
    } 
} 

클라이언트 측

myGrid1.on('rowcollapse', function (event) { 
      GridConnection.stop(); 
     }); 

     myGrid1.on('rowexpand', function (event) { 
      var row = event.args.rowindex; 
      var value = myGrid1.jqxGrid('getcellvalue', row, "Name");     
      GridConnection.start().done(function() { 
       GridConnection.send("P" + value); 
      }); 

내가 무엇이 필요에 signalR을 통해 연결 및 데이터 업데이트를 시작합니다 확장이다는 분리해야한다 붕괴 후 잠시. 그리드의 nymber는 하나 이상일 것입니다. 희망이 내 요점을 명확하게하는 데 도움이됩니다. 당신이 내 lib 디렉토리를 사용할 수

+0

하나의 연결로 원하는 것을 얻을 수있을 것입니다. –

+0

Thnxs @HallvarHelleseth for ur reply, 원시 코드가 업데이트 됨으로 인해 더 명확 해지기를 바랍니다. – user1260967

+0

하나의 연결을 사용하지 않고 전송 한 메시지의 속성으로 그리드 이름이나 ID를 포함시켜주세요. 클라이언트. 수신 논리에서 어떤 그리드를 업데이트해야하는지 조건부로 결정할 수 있습니다. – rpgmaker

답변

0

는 nuget를 사용하여 설치 SignalR.EventAggregatorProxy

라고

Install-Package SignalR.EventAggregatorProxy 

그것은 있도록, 후드 아래에 당신을 위해 허브와 연결 세부 사항을 처리합니다 이벤트 구독 및 게시 만 필요합니다.

설정 방법은 wiki를 확인하십시오. https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

일단 당신이 할 일 필요가 자바 스크립트에서 백 엔드 이벤트를 수신 할 수 있도록 설정

ViewModel = function() { 
    signalR.eventAggregator.subscribe(MyApp.Events.TestEvent, this.onTestEvent, this); 
}; 
당신은 하나 개의 연결 만에 원하는 얼마나 많은 이벤트를 수신 할 수

하나 개의 허브

관련 문제