我需要一些关于流星的建议.我想将现有的express/node.js应用程序移到meteor框架上,以利用服务器存储 - MongoDB和框架的MVC特性.我的应用程序需要进行重大的重构.我当前的应用服务器与远程主机建立TCP连接,每秒都会发出字符串数据.此应用服务器处理来自远程主机的字符串数据,然后将其发送到应用客户端.由于meteor使用node.js,我认为这就像将当前应用服务器代码的部分TCP连接移动到流星服务器代码一样简单.这是一个坚实的逻辑,还是在草地上有一条蛇?
当然,总会尝试,看看会发生什么.我把这样的东西放在Meteor.startup()中
var net = Npm.require('net'), dataStream = net.createConnection(5000,"localhost"); dataStream.setEncoding('utf8'); dataStream.on('data', function(data) { var line = data.trim(); Messages.insert({name:"line",message: line, time:Date.now()}); });
我抱怨有关在光纤外面运行的Meteor代码.是否正确更新客户端和服务器可见的集合?我假设更新将保留在服务器上并推送到客户端,我将有一个视图来显示更改.
我遇到了完全相同的问题(实际上,我是在制作TCP服务器而不是客户端),但是通过在每个回调函数周围添加Meteor.bindEnvironment来解决它.喜欢:
// ..set- and fire up a tcp server.. var server = net.createServer( Meteor.bindEnvironment( function ( socket ) { // ..with a listener that processes the commands.. socket.addListener( "data", Meteor.bindEnvironment( function ( data ) { // ..working with collections now just works! } ) ); } ) ).listen( port );
有关此方法的详细说明,请参阅https://www.eventedmind.com/feed/meteor-what-is-meteor-bindenvironment.