C# SignalR 2.0.NET控制台客户端

C# SignalR 2.0.NET控制台客户端,c#,asp.net,.net,signalr,signalr.client,C#,Asp.net,.net,Signalr,Signalr.client,我有我的服务器控制台应用程序: static void Main(string[] args) { string url = "http://localhost:8080"; using (WebApp.Start(url)) { MyHub hub = new MyHub(); Console.WriteLine("Server running on {0}", url);

我有我的服务器控制台应用程序:

    static void Main(string[] args)
    {
        string url = "http://localhost:8080";
        using (WebApp.Start(url))
        {
            MyHub hub = new MyHub();
            Console.WriteLine("Server running on {0}", url);
            var key = Console.ReadLine();
            while (key != "quit")
            {
                hub.Send("Server", key);
            }
        }
    }

public class MyHub : Hub
{
    public void Send(string name, string message)
    {
        var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
        context.Clients.All.addMessage(name, message);
    }
}
public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR();
    }
}
我在运行客户端时没有收到任何错误。但是,控制台上不会打印任何内容

当我取消注释这两行时:

hubConnection.TraceLevel = TraceLevels.All;
hubConnection.TraceWriter = Console.Out;
我能够在控制台中看到一些跟踪输出

07:56:28.0121460 - 355ca933-de49-400b-b859-c9dde6361151 - WS: OnMessage({"C":"d-
69A14839-B,0|C,0|D,1|E,0","S":1,"M":[]})
07:56:28.0277722 - 355ca933-de49-400b-b859-c9dde6361151 - ChangeState(Connecting
, Connected)
07:56:33.4655493 - 355ca933-de49-400b-b859-c9dde6361151 - WS: OnMessage({"C":"d-
69A14839-B,1|C,0|D,1|E,0","M":[{"H":"MyHub","M":"addMessage","A":["Server","Hello World"]}]}
)
07:56:37.9657773 - 355ca933-de49-400b-b859-c9dde6361151 - WS: OnMessage({})
 07:56:47.9975354 - 355ca933-de49-400b-b859-c9dde6361151 - WS: OnMessage({})
“服务器”和“Hello World”是从服务器发送的消息,因此我猜客户端正在接收消息,只是我可能以错误的方式将它们打印到控制台

有人能帮忙吗


附加信息:我能够在我的MVC应用程序上很好地接收消息

您不应该这样声明hubProxy事件处理程序吗

hubProxy.On<string, string>("Send", (name, message) => 
{
   Console.WriteLine("Incoming data: {0} {1}", name, message);
});
hubProxy.On(“发送”(名称、消息)=>
{
WriteLine(“传入数据:{0}{1}”,名称,消息);
});

谢谢。我可以拥有的字符串参数数量是否有限制?您可以始终使用以下内容:hubProxy.On(“发送”,“消息)=>Console.WriteLine(“传入数据:{0}{1}”,message.Member1,message.Member2);})@DavidBrabant我认为
“addMessage”
是正确的第一个参数?您将
.Invoke
“Send”
对吗?@klor服务器MyHub上的方法名为Send。客户端调用Send,Send将向所有客户端广播“addMessage”。如果Send和addMessage是同一个函数,您将有一个无限递归。@dthorpe感谢您的响应-不幸的是,在这段时间里,我已经完全忘记了我所知道的关于SignalR的一切,所以我不得不相信您的话,直到我被迫重新讨论这个主题。干杯您能从控制台向另一台发送消息吗?
hubProxy.On<string, string>("Send", (name, message) => 
{
   Console.WriteLine("Incoming data: {0} {1}", name, message);
});