如何在 MVC 应用程序中使用单一实例信号客户端



我需要使用 .net 客户端连接到启用 Signalr 的应用程序。

客户端类需要是单一实例并加载以供全局使用。

我想知道在 MVC 应用程序中全局使用单例的最佳技术是什么。

我一直在研究使用应用程序开始获取单例,我在哪里保存它对我来说是一个谜。

根据设计,HUB 不能是单一实例 SignalR 为每个传入请求创建一个实例。

在客户端上,我将使用 IoC 框架并将客户端注册为单例,这样尝试获取它的每个模块都将获得相同的实例。

我做了一个小库来为你处理这一切,安装服务器,比如

Install-Package SignalR.EventAggregatorProxy

阅读此处了解连接它的几个步骤,它需要一个背板服务总线或事件聚合器才能拾取您的事件

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

配置完成后,

使用
Install-Package SignalR.EventAggregatorProxy.Client.DotNet

在此处查看如何设置

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki/.NET-Client

配置完成后,任何类都可以将自己注册为侦听器,例如

public class MyViewModel : IHandle<MyEvent>
{
   public MyViewModel(IEventAggregator eventAggregator) 
   {
      eventAggregator.Subscribe(this);
   }
   public void Handle(MyEvent message)
   {
      //Act on MyEvent
   }
}

在服务器上,您可以使用 GetClients() 方法从集线器外部向所有连接的客户端发送消息,如下所示:

public MyHub : Hub 
{
    // (Your hub methods)
    public static IHubConnectionContext GetClients()
    {
        return GlobalHost.ConnectionManager.GetHubContext<MyHub>().Clients;
    }
} 

你可以像这样使用它:

MyHub.GetClients().All.SomeMethod();

最新更新