SignalR Client到MVC5

时间:2013-12-06 20:25:06

标签: c# client-server signalr asp.net-mvc-5 signalr-hub

我试图通过一个单独的小型客户端应用程序来打击我的MVC5 SignalR Hub,但无济于事。

一些背景知识:

我有一个使用SingalR 1.10的常规ASP.NET应用程序,我可以使用我的客户端。代码:

ASP.NET Hub:

namespace SignalrTest
{
    public class ScanHub : Hub
    {
        public void SendScan(string data, string xmlData)
        {
            Clients.All.broadcastMessage(data, xmlData);
        }
    }
}

客户端:

 connection = new HubConnection("http://localhost:2446/");
 hubProxy = connection.CreateHubProxy("ScanHub");
 connection.Start();

 ........

 private static async Task RunAsync()
 {
     object[] param = new object[2];
     param[0] = _Data;
     param[1] = _xmlData;
     await hubProxy.Invoke("SendScan", param);
 }

再次,这工作正常。我的MVC Hub与另一个相同(我确保更改了客户端HubConnection地址),我的Startup.cs为:

[assembly: OwinStartupAttribute(typeof(SignalrTest.Startup))]
namespace SignalrTest
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

运行我的客户端,它没有错误地触发,但我没有得到任何响应或任何迹象表明MVC方面发生了任何事情。

任何人都可以看到我的MVC应用程序出错了吗?我不清楚是否需要改变路由。我很高兴发布任何其他有助于解决我的问题的代码。谢谢你提前。

2 个答案:

答案 0 :(得分:0)

尝试将您在.NET客户端上的连接丢弃为异步方法,并在连接良好时进行快速测试。

 private async void Connect()
 {
   connection = new HubConnection("http://localhost:2446/");
   hubProxy = connection.CreateHubProxy("ScanHub");
   await connection.Start();
   //If using WPF you can test like so if not use whatever output method you prefer to see if it connects
   if (Connection.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected)
   {
            MessageBox.Show("Connected!");
   }
   else
   {
            MessageBox.Show("Fail!");
   }
 }

答案 1 :(得分:0)

你真的使用SignalR 1.1吗? SignalR 1.1不使用OWIN启动类,MapSignalR方法甚至不应该编译。