SignalR .Net客户端:如何向组发送消息?

我正在使用SignalR Wiki Getting Started Hubs页面中的示例聊天应用程序。 我已经扩展它以添加组支持,它工作正常。

但是,现在我想从外部控制台应用程序向组发送消息。 这是我的控制台应用程序的代码,下面是我的代码组。 如何从代理向组发送消息? 可能吗?

// Console App using System; using Microsoft.AspNet.SignalR.Client.Hubs; namespace SignalrNetClient { class Program { static void Main(string[] args) { // Connect to the service var connection = new HubConnection("http://localhost:50116"); var chatHub = connection.CreateHubProxy("Chat"); // Print the message when it comes in connection.Received += data => Console.WriteLine(data); // Start the connection connection.Start().Wait(); chatHub.Invoke("Send", "Hey there!"); string line = null; while ((line = Console.ReadLine()) != null) { // Send a message to the server connection.Send(line).Wait(); } } } } 

SignalR Web App主机:

 namespace SignalrServer.Hubs { public class Chat : Hub { public void Send(string message) { // Call the addMessage method on all clients Clients.All.addMessage(message); Clients.Group("RoomA").addMessage("Group Message " + message); } //server public void Join(string groupName) { Groups.Add(Context.ConnectionId, groupName); } } } 

Default.aspx的

    <!--  -->   $(function () { // Proxy created on the fly var chat = $.connection.chat; // Declare a function on the chat hub so the server can invoke it chat.client.addMessage = function (message) { $('#messages').append('
  • ' + message + '
  • '); }; $.connection.hub.start(function () { chat.server.join("RoomA"); }); // Start the connection $.connection.hub.start().done(function () { $("#broadcast").click(function () { // Call the chat method on the server chat.server.send($('#msg').val()); }); }); });

    我用类似的东西做的是创建一个接受你选择的对象的方法,例如

    你的新课

     public class MyMessage{ public string Msg { get; set; } public string Group { get; set; } } 

    然后在Hub中创建一个接受此对象的方法。

     public void Send(MyMessage message) { // Call the addMessage method on all clients Clients.All.addMessage(message.Msg); Clients.Group(message.Group).addMessage("Group Message " + message.Msg); } 

    然后从您的客户端,您可以传入此对象。

     chatHub.Invoke("send", new MyMessage() { Msg = "Hello World", Group = "RoomA" }); 

    然后,您也可以从JS客户端调用它

     chat.server.send({ Msg: "Hello World", Group: "RoomA" });