繁体   English   中英

从AngularJS客户端到一个SignalR集线器的多个连接

[英]Multiple connections to one SignalR hub from AngularJS client

我有一个AngularJS应用程序。 假设我对不同的控制器有不同的看法。 在每个控制器中,我想使用来自同一SignalR服务器中心的数据。

什么是管理集线器连接的最佳实践:

  • 我开始与每个控制器中的集线器建立新的连接( connection.start() )。 到同一集线器有多个连接是否有问题?
  • 我在初始化应用程序后就打开了与集线器的连接,然后可以在控制器中使用这些连接。

当我在当前视图中不使用集线器的数据时,应该关闭连接,而在返回视图时是否重新打开连接? 或者即使我不是每次都使用所有连接,打开多个连接没有问题吗?

根据SignalR的文档,它将使用相同的连接,因为它是相同的客户端。 但是,您描述它的方式,在每个控制器上重新创建connection.start可能不是我建议的方式。

我实现了这样的东西: https : //dzone.com/articles/better-way-using-aspnet

它具有服务,并使用$ scope。$ parent。$ on('',function(){}); 在每个控制器中。 这还允许您仅在您关心的每个控制器上观看某些事件。 并让服务监视所有内容并将事件“发送”到关心的控制器。 您将在控制器底部调用{signalrservicename} .intialize(),如该文章所述。 与角度控制器共享“数据”的最有效和最佳方法是

1)使用$ rootScope。$ emit(如本文所述)以及服务或

2)仅使用共享应用程序所有事件的一项服务,而不使用$ rootScope。$ emit。 这将要求您的服务对每个控制器都有“广泛的知识”,而这有时是不切实际的。

如果使用websocket将数据从服务器发送到客户端,则应保持连接打开。

如果要限制从同一会话到服务器的连接数,则可以从同一应用程序创建一个连接,并将数据存储到$ rootscope中,然后每个控制器可以监视全局变量并从中获取信息,如果他们在听同样的变化。 否则我认为有多个连接是可以的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM