SignalR核心流

时间:2018-10-02 14:32:29

标签: javascript .net signalr core

我对SignalR Core中的流传输有疑问。如何在.net客户端中启动流并在javascript客户端中查看信息。我需要将几个客户端附加到一个流。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以将这些客户放在同一个组中。

步骤1:(JavaScript) 与客户建立连接后,请为其订阅组:

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

步骤2: 在服务器端,通过HUB中的C#代码,将客户端订阅到组:

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");

我希望这会有所帮助。