重新加载页面时如何暂停收听ng Websocket?

Posted

技术标签:

【中文标题】重新加载页面时如何暂停收听ng Websocket?【英文标题】:How to pause listening to the ng Websocket when reloading the page? 【发布时间】:2015-10-11 13:09:03 【问题描述】:

我正在使用 angular ui,我创建了一个指令,它的控制器监听 websockets 服务器并检索数据,实际上它工作正常但是当离开加载指令的页面时套接字客户端仍在监听,我的问题如何暂停收听,直到用户再次打开加载此指令的页面然后恢复收听?

我正在使用这个模块:https://github.com/wilk/ng-websocket

暂停收听并继续收听的最佳方式是什么?停止聆听并重新开始聆听是否有效?这种方法的优缺点是什么?

编辑:添加一些代码来澄清

function startWS(host, port, token) 
      ws = $websocket.$new(
          url: 'ws://' + host + ':' + port + '?token=' + token,
          reconnect: true,
          reconnectInterval: 500
      );

      ws.$on('$open', function () 
          console.log('Web Socket Opened');
      );

      ws.$on('$close', function () 
          console.log('Web Socket Closed');
      );

      ws.$on('$message', function (action) 
          console.log(action);
      );
  

这个函数是用来连接websocket的函数,我需要一些其他的函数来暂停这个监听和其他的恢复。

【问题讨论】:

分享你的一些代码将帮助人们找到你的问题的解决方案。 :) 现在添加了一些代码,没有什么特别的,我在问一个概念,它是否有效? 您不能暂停,但可以关闭并重新打开连接。设置reconnect: false 设置 reconnect: false 当服务器由于某种原因已经关闭并且我在同一个监听页面中时会有风险 【参考方案1】:

我认为这取决于调用控制器/指令的频率。您可以在指令范围内观察 $destroy 事件。然后你可以关闭连接。但这可能会导致许多重新连接。我可能会在 app init 上设置连接并依赖该连接。你可以设置一个额外的布尔值来定义来自 websocket 服务器的消息是否应该被忽略。这个布尔值必须在您的应用程序中全局可用。我希望我能理解你的问题。

【讨论】:

以上是关于重新加载页面时如何暂停收听ng Websocket?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Angularjs重新加载页面?

Prime Ng 日历触发页面重新加载

如何在用户退出时暂停我的应用程序,并在他们重新进入应用程序时恢复它?

视频暂停时如何使 vjs-big-play-button 出现?

如何使用 boost beast websocket 客户端收听 websocket 提要?

每个带有扩展的页面都会重新加载 javascript(并重新建立 ws 连接)