Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从Meteor服务器建立TCP连接_Node.js_Meteor - Fatal编程技术网

Node.js 从Meteor服务器建立TCP连接

Node.js 从Meteor服务器建立TCP连接,node.js,meteor,Node.js,Meteor,我需要一些关于流星的建议。我想将现有的express/node.js应用程序转移到meteor框架,以利用服务器存储MongoDB和框架的MVC特性。我的应用程序需要进行重大重构。我当前的应用服务器与远程主机建立TCP连接,该主机每秒都会吐出字符串数据。此应用程序服务器处理来自远程主机的字符串数据,然后将其发送到应用程序客户端。由于meteor使用node.js,我想这就像将我当前的应用程序服务器代码中进行TCP连接的部分移动到meteor服务器代码中一样简单。这是一个可靠的逻辑,还是说这一方法

我需要一些关于流星的建议。我想将现有的express/node.js应用程序转移到meteor框架,以利用服务器存储MongoDB和框架的MVC特性。我的应用程序需要进行重大重构。我当前的应用服务器与远程主机建立TCP连接,该主机每秒都会吐出字符串数据。此应用程序服务器处理来自远程主机的字符串数据,然后将其发送到应用程序客户端。由于meteor使用node.js,我想这就像将我当前的应用程序服务器代码中进行TCP连接的部分移动到meteor服务器代码中一样简单。这是一个可靠的逻辑,还是说这一方法存在漏洞

当然,总是有尝试,看看会发生什么。我在流星中放了这样的东西


我收到一个关于Meteor代码在光纤外运行的投诉。更新对客户端和服务器可见的集合是否是正确的方法?我假设更新将保留在服务器上,并推送到客户端,在那里我将有一个视图来显示更改。

是的,这大致就是它的工作方式。我刚刚完成了将expressjs应用程序移动到meteor的工作,我就是这么做的

我必须做的一些事情(我想你需要做的是:)

  • 使用
    Npm.require(“…”)
    代替
    require(“…”)
  • 使用
    iron router
    处理不同的服务器端路由
  • 对于
    app.get(..
    等)的每次使用,在iron router中创建服务器端路由
  • 在express路由中重新定义res/req,分别指向this.response/this.request,并根据底层连接中间件(例如res.cookie()、req.header()、…)将express定义的任何特殊函数更改为再次工作

更新:有关更多详细信息,请参阅。

是的,这大致就是它的工作原理。我刚刚完成了将expressjs应用程序移动到meteor的工作,我就是这么做的

我必须做的一些事情(我想你需要做的是:)

  • 使用
    Npm.require(“…”)
    代替
    require(“…”)
  • 使用
    iron router
    处理不同的服务器端路由
  • 对于
    app.get(..
    等)的每次使用,在iron router中创建服务器端路由
  • 在express路由中重新定义res/req,分别指向this.response/this.request,并根据底层连接中间件(例如res.cookie()、req.header()、…)将express定义的任何特殊函数更改为再次工作

更新:有关更多详细信息,请参阅。

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

有关此方法的详细说明,请参阅。

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

有关此方法的详细说明,请参见。

您必须在回调周围使用
Meteor.bindEnvironment
才能使其与Fibers协同工作您也可以在回调周围使用
Meteor.wrapAsync
。您必须在回调周围使用
Meteor.bindEnvironment
才能使其与Fibers协同工作您可以使用
Meteor.wrapAsync
也在回调周围。