大佬教程收集整理的这篇文章主要介绍了angularjs – SignalR:如何在集线器启动后添加客户端呼叫?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个主控制器,它立即启动集线器,向客户端发送一些消息.在里面,我有几个子页面,每个子页面都可以订阅不同的服务中心.问题是客户端没有收到消息,因为它已在主控制器中已启动集线器后连接.
作为测试,如果我在主控制器中注释出集线器启动,则子控制器中的集线器工作正常.
根据我的阅读,您需要在启动集线器之前连接所有客户端调用.我不明白……如果它是一项服务,我应该可以在集线器启动后随时订阅或取消订阅.为什么不?如何解决?
因此,可以在连接开始后添加客户端方法.诀窍是使用所谓的“没有生成代理”.该限制适用于“使用生成的代理”.
以下是我从SignalR入门教程中获取的工作示例.
这是使用“with generated proxy”的主控制器:
$.connection.statusHub.client.updateStatus = function (status) { $scope.status = status; $scope.$apply(); } $.connection.hub.start();
这是在使用“without generated proxy”的子控制器中:
var connection = $.hubConnection(); var proxy = connection.createHubProxy('stockTickerHub'); proxy.on('updateStockPrice',function (stock) { var st = $scope.stocks.firstOfKey(stock.symbol,'symbol'); st.lastPrice = stock.lastPrice; $scope.$apply(); }); var hub = $.connection.stockTickerHub; connection.start().done(function () { hub.server.getAllStocks().done(function (stocks) { $scope.stocks = stocks; }); });
请注意,如果我在子控制器中使用“with generated proxy”,它不起作用,如下所示:
var hub = $.connection.stockTickerHub; hub.client.updateStockPrice = function (stock) { var st = $scope.stocks.firstOfKey(stock.symbol,'symbol'); st.lastPrice = stock.lastPrice; $scope.$apply(); }; $.connection.hub.start().done(function () { hub.server.getAllStocks().done(function (stocks) { $scope.stocks = stocks; }); });
为了证明“使用生成的代理”模式的限制,如果我在主控制器中注释掉该代码,则此代码有效.
顺便说一句,我对指南中有或没有生成代理的术语感到困惑,在这两种情况下,它仍然被称为xxxProxy.难道他们找不到更好的名字?或者有人有解释?
以上是大佬教程为你收集整理的angularjs – SignalR:如何在集线器启动后添加客户端呼叫?全部内容,希望文章能够帮你解决angularjs – SignalR:如何在集线器启动后添加客户端呼叫?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。