从Meteor Server建立TCP连接

low*_*rog 1 node.js meteor

我需要一些关于流星的建议.我想将现有的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()});
});
Run Code Online (Sandbox Code Playgroud)

我抱怨有关在光纤外面运行的Meteor代码.是否正确更新客户端和服务器可见的集合?我假设更新将保留在服务器上并推送到客户端,我将有一个视图来显示更改.

小智 5

我遇到了完全相同的问题(实际上,我是在制作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 );
Run Code Online (Sandbox Code Playgroud)

有关此方法的详细说明,请参阅https://www.eventedmind.com/feed/meteor-what-is-meteor-bindenvironment.