我对SignalR Core中的流传输有疑问。如何在.net客户端中启动流并在javascript客户端中查看信息。我需要将几个客户端附加到一个流。谢谢您的帮助。
答案 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");
我希望这会有所帮助。