【问题标题】:Using Angular JS, what is the correct way to close a web socket connection upon route change?使用Angularjs,在路由更改时关闭websocket连接的正确方法是什么?
【发布时间】:2014-07-14 09:51:52
【问题描述】:

这个问题不言自明。

如果我通过控制器在 Angular JS 中打开 Web 套接字连接,它会在导航后保持打开状态(路由更改)。

这当然是正常行为,但我想知道在导航时请求关闭连接的“最佳实践”方式可能是什么。

我显然可以连接到$routeChange... 方法并向控制器广播。但我错过了什么吗?有没有更好的办法?

【问题讨论】:

  • 如果您的控制器因路由更改而死机,您可以尝试在控制器的$scope 上监听$destroy 事件?
  • @ivarni 控制器总是死机吗?
  • @ivarni 好的,谢谢。所以绑定到$scope.$on("$destroy") 就是答案。你愿意回答这个问题吗?

标签: javascript angularjs websocket


【解决方案1】:

在控制器的 $scope 上监听 $destroy 事件并清理所有需要清理的内容,在您的情况下,这将关闭 websocket 连接。

$scope.$on('$destroy', function(event) {
    ...
});

有关角度控制器生命周期的更多背景信息,请参阅this answer

【讨论】:

  • 优秀。谢谢@ivarni。