【发布时间】:2016-08-01 02:44:49
【问题描述】:
我在我的 Node.js 后端设置了一个 socket.io,它会发出某些事件,然后 AngularJS 会捕获并显示错误并更改一些 $rootScope 变量。我有一个问题,每次给我两个通知时,这个发射似乎都会触发两次,我不知道问题出在哪里
server.js (shortened)
var socket = require('socket.io');
var app = express();
var router = express.Router();
app.use('/api', router);
var server = app.listen(config.conn_port, function(){
console.log("Server launched at port " + config.conn_port);
});
var io = socket.listen(server);
require('./api/routes')(router, connection, io);
routes.js
module.exports = function(router, connection, socket) {
# Net event
client.on('error', function () {
socket.emit('serverDisconnected', {message: 'Connection ended', server_conn: false});
});
}
app.js (AngularJS)
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);
}
});
})
}
};
});
AngularJS Controller
dashboardModule.controller('dashboardMain', function ($scope, $http, $rootScope, Notification, socket) {
socket.on('serverDisconnected', function (message) {
Notification.error(message.message);
});
});
【问题讨论】:
标签: javascript angularjs node.js sockets