我正在使用 angularjs、nodejs 和 socket.io。 我有一个 main.html,它有主视图,其中不同的 html 文件加载到 ng-view 中。现在我想要的是,每次在 angular-js 的 ng-view 中加载新的 html 时,我想创建一个新的套接字连接。目前它的作用是仅在第一次加载 main.html 时创建一个新套接字,而不是在每次加载 html View 时创建一个新套接字。
最佳答案
我认为你想要的是当你匹配路由时在每个 Controller 中创建一个套接字。
所以,你可以为此创建一个工厂,类似的东西:
app.factory('socket', function ($rootScope) {
var socket = io.connect();
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
});
然后只需调用您的 Controller :socket.on('...', function (...) {...})
确保套接字已被注入(inject)。
希望能解决您的问题! :)
关于angularjs - 在 angularjs 中的每个 View 加载上创建与 socket.io 的新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31825678/