Socket.io 在 Angular 中更改路线后停止工作
Socket.io stops working after route change in Angular
>Poblem
我有一个简单的 Angular 应用程序,有 3 条路由:r1、r2、r3。r1 的控制器具有套接字事件的侦听器。这是启动应用时加载的第一个路由。启动应用程序时一切正常。但是,当我导航到 r2/r3 然后返回 r1 时,套接字停止工作。控制台中没有错误。
法典
应用.js
var host = "http://myhost.com";
var socket = io(host + ':3000');
angular
.module('myApp', [
'ngRoute'
])
.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/r1.html',
controller: 'r1Ctrl'
})
.when('/r2', {
templateUrl: 'views/r2.html',
controller: 'r2Ctrl'
})
.when('/r3', {
templateUrl: 'views/r3.html',
controller: 'r3Ctrl'
})
.otherwise({
redirectTo: '/'
});
});
r1按.js
angular.module('myApp')
.controller('r1Ctrl', function ($scope) {
// Listeners
socket.on('event1', function (data) {
$scope.$apply(function () {
...
});
});
...
});
即使您离开 r1,套接字侦听器仍保持注册状态。当您再次访问 r1 时,将为同一事件注册另一个侦听器。对你的问题的唯一解释是,你的回调没有考虑到这一事实,如果已经完成,也无法完成工作。
相关文章:
- jQuery UI自动完成突然停止工作
- JavaScript打印功能使日历停止工作
- 下拉列表在使用z索引放置在前面后停止工作
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 注入工厂时,Angular停止工作
- React Native DeviceEventEmitter键盘WillShow停止工作
- JavaScript在更改css时停止工作
- Chrome地理定位在更新后停止工作
- 重新启动jquery脚本后,角度停止工作
- twitter引导崩溃在第一次点击后停止工作
- 更新Wordpress和我的平滑滚动停止工作
- Hammer.js过了一段时间就停止工作了
- 应用程序在“关闭”之后停止工作(控制台中没有错误);咕哝的构造”;
- 当我添加JavaScript时,链接按钮停止工作
- NetBeans调试突然停止工作
- 某些Magento后端管理按钮已停止工作
- 表单验证在接近尾声时停止工作
- 为什么在ASP.NET Ajax更新面板中执行任何操作后javascript元素都停止工作
- 在html文件中添加了多个外部javascript,其中一个停止工作
- jQuery插件在为元素分配id时停止工作