2013-05-23 2 views
1

Я получил данные с разных серверов на мой класс концентратора. У каждого из них есть свой собственный идентификатор. Всякий раз, когда данные поступают на серверный концентратор, он передает мои данные клиенту. Это похоже на прогресс работы. Я хочу отправить каждый идентификатор клиенту с уникальным идентификатором узла. Как фильтровать сообщение с сервера? Я использовал таким образом Clients.Client("ID1").send(data); Или я должен указать в свойстве вызывающего абонента? Любой может мне помочь.нажимать данные с сервера на клиент с указанным идентификатором ID

С уважением, Shanthini

ответ

3

Вы можете использовать ConnectionId для идентификации клиента.

Когда подключен новый клиент, храните ConnectionId где-то, чтобы вы могли использовать его позже, чтобы идентифицировать клиента.

public class MyHub : Hub 
{ 
    public override Task OnConnected() 
    { 
     var connectionId = Context.ConnectionId; 
     // store connectionId somewhere 
     return base.OnConnected(); 
    } 
} 

Для отправки данных клиенту, определить его ConnectionId:

public void SendNewData(string connectionId, object data) 
{ 
    var Context = GlobalHost.ConnectionManager.GetHubContext<MyHub>(); 
    Context.Clients.Client(connectionId).send(data); 
} 

Если необходимо идентифицировать клиентов каким-либо другим ID, то вы должны хранить отношения между вашим ID и ConnectionId.

+0

спасибо. Я пытаюсь сохранить my connectionId в базе данных на данный момент. До этого у меня есть другой вопрос. Все мои данные попадают в очередь. Когда он попадает на серверный концентратор, он передает данные клиенту. Теперь, как я узнаю, какие данные попадают в мой центр? Хаб получает данные из очереди; Его непрерывный процесс. Приходите, нажмите и покажите. Затем, как я могу фильтровать данные? Это имеет смысл? – Shanthini

+0

Не уверен, что я понимаю ваш вопрос. Рассмотрим хаб как способ запуска удаленной процедуры с передачей некоторых данных в качестве параметров (клиентская процедура с сервера или серверная процедура с клиента). Все остальные связаны с вашей логикой приложения (когда вызывать процедуру, что должна делать эта процедура с полученными данными и т. Д.). – aleyush

+0

Огромное спасибо. Я выполнил свое требование, используя ваш ответ :) – Shanthini