使用 express.io 将 angular 控制器转换为实时数据
Convert angular controller for realtime data with express.io
我是 express.io.I 的新手,在 socket.io 中有一组代码 运行ning,前端有 node.js 和 angular,没有 [=27] =] 已经创建了服务器,它正在以 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>
到目前为止,一切都是 运行 problem.data 在另一个页面中使用 interval.But 正确显示我想使用 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 的 运行 很好,每当 'msg' 的 io.emit 发生并在其他 page.I 中显示时,它就是股票的绑定数据需要为与 express.io.Any 建议 please.Help 相同的控制器编码将不胜感激。
最后是solved.I忘了提供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);
});
});
}
};
});
我是 express.io.I 的新手,在 socket.io 中有一组代码 运行ning,前端有 node.js 和 angular,没有 [=27] =] 已经创建了服务器,它正在以 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>
到目前为止,一切都是 运行 problem.data 在另一个页面中使用 interval.But 正确显示我想使用 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 的 运行 很好,每当 'msg' 的 io.emit 发生并在其他 page.I 中显示时,它就是股票的绑定数据需要为与 express.io.Any 建议 please.Help 相同的控制器编码将不胜感激。
最后是solved.I忘了提供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);
});
});
}
};
});