【问题标题】:SignalR sharing connection between 2 appsSignalR 在 2 个应用程序之间共享连接
【发布时间】:2015-04-14 17:00:14
【问题描述】:

我在一个解决方案中有 2 个项目,一个是 MVC 应用程序,第二个是简单的 Windows 窗体应用程序。出于测试目的,我目前正在尝试做的是通过 Windows 窗体应用程序控制我的 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 中的上下文已加载并调用了“updatesequence”方法,但没有任何反应。

【问题讨论】:

  • 你对这个场景有什么问题?
  • 如何进行这项工作?它在当前设置中不起作用。 Forms 中的上下文已加载并调用了“updatesequence”方法,但没有任何反应。

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


【解决方案1】:

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

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

此外,除非您计划拥有多个服务器并且需要水平可扩展性,在这个阶段这可能不是您主要关心的问题,否则您根本不需要 Sql Server 背板(在您的 @987654323 中调用 UseSqlServer @类)。

【讨论】:

    猜你喜欢
    • 2010-11-30
    • 2019-05-10
    • 1970-01-01
    • 2018-03-17
    • 2014-09-30
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多