Потоковое ядро ​​SignalR - PullRequest
0 голосов
/ 02 октября 2018

У меня есть вопрос о потоковой передаче в SignalR Core.Как я могу запустить поток в клиенте .net и увидеть информацию в клиенте JavaScript.Мне нужно присоединить несколько клиентов к одному потоку.Спасибо за помощь.

1 Ответ

0 голосов
/ 02 октября 2018

Вы можете поместить этих клиентов в одну группу.

Шаг 1: (JavaScript) Когда клиент подключен, подпишите его на группу:

$.connection.hub.start().done(function(){
   $.connection.yourHub.subscribeClient();
});

Шаг 2: На стороне сервера, в коде C # вашего HUB, подпишите клиента на группу:

public Task<bool> SubscribeClient(){
   Groups.Add(Context.ConnectionId, "your_group_name");
   return Task.FromResult(true);
}

Шаг 3: На стороне клиента создайте метод, который будетВызывается сервером:

$.connection.yourHub.client.newMessageFromTheServer = function(msg) {
  alert('Message from the server: " + msg);
}

помните, что этот метод необходимо определить перед началом подключения signalr2 к серверу

Шаг4: Вызвать метод с сервера:

public Task<bool> SendMessageToAGroup(string groupName, string msg) {
     Clients.Group(groupName).newMessageFromTheServer(msg);
     return Task.FromResult(true);     
}

Метод из четвертого шага может быть вызван со стороны клиента:

$.connection.yourHub.sendMessageToAGroup('your_group_name', "my message").done(function(response) {
   alert('message sent');
});

или вы можете вызвать этот метод изконтроллер:

//get hub first
var myHub = GlobalHost.ConnectionManager.GetHubContext<YourHub>();
//then send a message to all subscribers
myHub.Clients.Group("your_group_name").newMessageFromTheServer("my message");

Надеюсь, это поможет.

...