如何发布任意数据?这就是我想要完成的,给出以下模板:
<head>
<title>Test</title>
</head>
<body>
{{> hello}}
</body>
<template name="hello">
<h1>{{greeting}} World!</h1>
</template>
我想greeting
在设定的时间间隔内动态更新,使用Meteor.setInterval
. 文档中的所有示例似乎都Collections
差不多。
如何发布任意数据?这就是我想要完成的,给出以下模板:
<head>
<title>Test</title>
</head>
<body>
{{> hello}}
</body>
<template name="hello">
<h1>{{greeting}} World!</h1>
</template>
我想greeting
在设定的时间间隔内动态更新,使用Meteor.setInterval
. 文档中的所有示例似乎都Collections
差不多。
您可以使用 Meteor Session 变量作为反应数据源,以便模板自动重新呈现 ( http://docs.meteor.com/#session_set )。尝试这个:-
if (Meteor.is_client) {
// Use 'greeting' Session variable as a reactive data source
Session.set('greeting', 0);
Template.hello.greeting = function () {
return "Welcome to test: " + Session.get('greeting');
};
Meteor.setInterval(function() {
Session.set('greeting', Session.get('greeting') + 1);
}, 1000);
}
if (Meteor.is_server) {
Meteor.startup(function () {
// code to run on server at startup
});
}
更新:显示挂钩到streams
包中。示例有效,但使用后果自负
if (Meteor.is_client) {
// Use client from stream package
sc = new Meteor._Stream('/sockjs');
sc.on('message', function(payload) {
var msg = JSON.parse(payload);
// Set session variable so template reacts
Session.set('greeting', JSON.stringify(msg.data));
});
// Use 'greeting' Session variable as a reactive data source
Template.hello.greeting = function () {
return Session.get('greeting');
};
}
if (Meteor.is_server) {
// Use server from stream package
ss = new Meteor._StreamServer();
// register handler for socket connection
ss.register(function (socket) {
var data = {socket: socket.id, connected: new Date()}
var msg = {msg: 'data', data: data};
// Send message to all sockets
_.each(ss.all_sockets(), function(socket) {
socket.send(JSON.stringify(msg));
})
});
}
您好,请查看这个新的Streams 包。您可以简单地将它用于您的用例
sc = new Meteor.Stream('hello');
if(Meteor.isServer) {
Meteor.setInterval(function() {
sc.emit('a_random_message', 'Random Message: ' + Random.id());
}, 2000);
Meteor.permissions.read(function() { return true });
}
if(Meteor.isClient) {
sc.on('a_random_message', function(message) {
Session.set('a_random_message', message);
});
Template.hello.greeting = function () {
return Session.get('a_random_message');
};
}