用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); }); }); } }; });
- 如果只有本地的Angular App将其称为控制器,则执行路由
- aws s3file upload使用aws-sdk nodejs
- AngularJS的$ routeProvider templateUrl总是使用Express返回404
- 在控制器中需要模块错误
- PassportJS – 在将有效载荷数据传递给passport.authenticate作为请求参数之前获取
- Node.js使用Vash视图引擎:如何将vash模型传递给angular?
- Angular-Fullstack获取当前的用户ID
- 节点js如何使用“node_modules”库而不是“src = <cdn>”
- 任何人都可以解释为什么(http:// localhost:3000 /#/ home)#在URL之间发生