[英]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.