Node.js 从Meteor服务器建立TCP连接
我需要一些关于流星的建议。我想将现有的express/node.js应用程序转移到meteor框架,以利用服务器存储MongoDB和框架的MVC特性。我的应用程序需要进行重大重构。我当前的应用服务器与远程主机建立TCP连接,该主机每秒都会吐出字符串数据。此应用程序服务器处理来自远程主机的字符串数据,然后将其发送到应用程序客户端。由于meteor使用node.js,我想这就像将我当前的应用程序服务器代码中进行TCP连接的部分移动到meteor服务器代码中一样简单。这是一个可靠的逻辑,还是说这一方法存在漏洞 当然,总是有尝试,看看会发生什么。我在流星中放了这样的东西Node.js 从Meteor服务器建立TCP连接,node.js,meteor,Node.js,Meteor,我需要一些关于流星的建议。我想将现有的express/node.js应用程序转移到meteor框架,以利用服务器存储MongoDB和框架的MVC特性。我的应用程序需要进行重大重构。我当前的应用服务器与远程主机建立TCP连接,该主机每秒都会吐出字符串数据。此应用程序服务器处理来自远程主机的字符串数据,然后将其发送到应用程序客户端。由于meteor使用node.js,我想这就像将我当前的应用程序服务器代码中进行TCP连接的部分移动到meteor服务器代码中一样简单。这是一个可靠的逻辑,还是说这一方法
我收到一个关于Meteor代码在光纤外运行的投诉。更新对客户端和服务器可见的集合是否是正确的方法?我假设更新将保留在服务器上,并推送到客户端,在那里我将有一个视图来显示更改。是的,这大致就是它的工作方式。我刚刚完成了将expressjs应用程序移动到meteor的工作,我就是这么做的 我必须做的一些事情(我想你需要做的是:)
- 使用
代替Npm.require(“…”)
require(“…”)
- 使用
处理不同的服务器端路由iron router
- 对于
等)的每次使用,在iron router中创建服务器端路由app.get(..
- 在express路由中重新定义res/req,分别指向this.response/this.request,并根据底层连接中间件(例如res.cookie()、req.header()、…)将express定义的任何特殊函数更改为再次工作
更新:有关更多详细信息,请参阅。是的,这大致就是它的工作原理。我刚刚完成了将expressjs应用程序移动到meteor的工作,我就是这么做的 我必须做的一些事情(我想你需要做的是:)
- 使用
代替Npm.require(“…”)
require(“…”)
- 使用
处理不同的服务器端路由iron router
- 对于
等)的每次使用,在iron router中创建服务器端路由app.get(..
- 在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
也在回调周围。