用express.io转换实时数据的angular度控制器

我是新来的express.io.我有一套代码运行在socket.io与node.js和angular度在前端没有问题。我已经创build了服务器,它发出一个数据的间隔为1000ms.Sample与客户端交互的服务器的代码是

var serverjson = [ {"Product": "REL", "BBP": "10", "BSP": "10.2", "LTP": "10.1" }, {"Product": "BEL", "BBP": "20", "BSP": "20.4", "LTP": "20" }, {"Product": "MTL", "BBP": "50", "BSP": "50.5", "LTP": "50.1" }, {"Product": "BSL", "BBP": "100", "BSP": "101", "LTP": "100.2" } ]; // define interactions with client app.io.route('ready', function(req){ //send data to client setInterval(function(){ for(i=0;i<serverjson.length;i++) { serverjson[i].BBP = Math.round((parseInt(serverjson[i].BBP) + Math.random())*100)/100; serverjson[i].BSP = Math.round((parseInt(serverjson[i].BSP) + Math.random())*100)/100; serverjson[i].LTP = Math.round((parseInt(serverjson[i].LTP) + Math.random())*100)/100; } var serverjsonstr = JSON.stringify(serverjson); req.io.emit('msg', {'msg': serverjsonstr}); }, 1000); }); 

并在客户端

 <!doctype html> <html> <head> <title>express.io Test</title> <script src="/socket.io/socket.io.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script> </head> <body> <script> var io = io.connect(); io.emit('ready'); io.on('msg', function(data){ $('#msg').text(data.msg); }); </script> <div id="msg"></div> </body> </html> 

直到这一切都与问题.data正在与间隔正常运行。但在另一个页面,我想用angular度控制器显示数据。 我在socket.io中做了同样的例子

 var apps = angular.module('stocksample', []); apps.controller('StockListCtrl', function($scope, socket) { $scope.stocks = []; socket.on('msg', function(data) { $scope.stocks = JSON.parse(data.msg); }); }); apps.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); }); }); }, }; }); 

并运行良好的socket.io这是绑定股票的数据每当io.emit“msg”发生,并在其他页面显示。我需要代码为express.io.Any相同的控制器。请任何build议。帮助将不胜感激。

最后解决了。我忘了提供socket.emit('ready'); 在我的angular厂

所以现在的工厂代码

 apps.factory('socket', function($rootScope) { var socket = io.connect(); socket.emit('ready'); return { on: function(eventName, callback) { socket.on(eventName, function() { var args = arguments; $rootScope.$apply(function() { callback.apply(socket, args); }); }); } }; });