meteorEADDRINUSEexception与光纤远程方法

以下是我在server / server.js文件中的代码。 当我打电话给Meteor.apply('testMethod')我得到Error: listen EADDRINUSE 。 我正在用陨石运行meteor应用,唯一安装的非通用软件包是npm

 var Fiber = Meteor.require('fibers'); var fiber = Fiber.current; Meteor.methods({ testMethod: function(){ setTimeout(function(){fiber.run('test')}, 2000); res = Fiber.yield(); console.log(res); return res; } }) 

我知道这里最明显的解决scheme是使用Meteor的光纤包装,但是我真正想要实现的是从asynchronous调用中的光纤产生,然后在某个事件处理程序中恢复。 而且我还没有find适合的东西。

堆栈跟踪:

 Error: listen EADDRINUSE at errnoException (net.js:901:11) at Server._listen2 (net.js:1039:14) at listen (net.js:1061:10) at net.js:1135:9 at dns.js:72:18 at process._tickCallback (node.js:415:13) 

我在Meteor IRC上回答了这个问题。

移动这一行:

 var fiber = Fiber.current; 

进入'testMethod'函数的第一行。 像这样:

 var Fiber = Meteor.require('fibers'); Meteor.methods({ testMethod: function(){ var fiber = Fiber.current; setTimeout(function(){fiber.run('test')}, 2000); res = Fiber.yield(); console.log(res); return res; } }); 

我相信你为什么遇到这种情况是因为每个用户都有自己的“纤维”。 所以当客户端呼叫服务器时,当前的光纤与你在外部范围内声明的光纤不同。

Interesting Posts