SignalR共享2个应用程序之间的连接

时间:2015-04-14 17:00:14

标签: javascript .net asp.net-mvc signalr signalr-hub

我在解决方案中有2个项目,一个是MVC应用程序,第二个是简单的Windows窗体应用程序。出于测试目的,我目前正在尝试做的是通过Windows Forms应用程序控制我的MVC应用程序上的内容。为了进一步简化这一点,我的应用程序上有一个按钮,单击此按钮时,应在我连接的客户端上更新HTML。因此,MVC应该管理客户端连接,而Forms应该专门用于内容管理。

我做的是这个 - MVC集线器设置

public class ConnectionHub : Hub
{
    public void Update()
    {
        Clients.All.updatesequence(" ");
    }
}

MVC启动设置:

[assembly: OwinStartup(typeof(Web.Startup))]

namespace Web
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {      
            GlobalHost.DependencyResolver.UseSqlServer(
        ConfigurationManager.ConnectionStrings["signalr"].ConnectionString);
            app.MapSignalR();
        }
    }
}

表单应用 - 点击按钮事件:

 private void button1_Click(object sender, EventArgs e)
 {
        var context = GlobalHost.ConnectionManager.GetHubContext<ConnectionHub>();
        context.Clients.All.updatesequence(" ");
 }

Javascript客户端函数“updatesequence()”应该没问题,因为我在不同的设置中测试它并且它工作正常。数据库连接也有效。

编辑:我的问题是 - 如何使这项工作?它在当前设置中不起作用。加载了Forms中的Context并调用了“updatesequence”方法,但没有任何反应。

1 个答案:

答案 0 :(得分:0)

您正在Winforms应用中调用服务器端代码,这是不对的。在Winforms应用程序中,您应该参考SignalR .NET 客户端库,并使用该库连接到您的服务器并将方法调用到您的集线器中(或者您可能希望为管理目的引入另一个方法)。

看看这个:http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-net-client

此外,除非您计划拥有多个服务器并且需要水平可伸缩性,在此阶段可能不是您的主要考虑因素,否则您根本不需要Sql Server背板(请致电UseSqlServer Startup类)。