我被困住了。这是我第一次使用 Node.js 和 javascript。我试图为用 C++ 编写的库实现 Node.js 绑定。我编写了它们并使用一个简单的控制台示例进行了测试,并且它们起作用了。但是,当我使用 http 服务器时,不会调用库中的回调。
让我一步一步解释。库异步接收来自设备的 HID 消息。回调在主线程中调用。应该有一个允许接收这些消息的事件循环。所以对于 Mac OS,我只是做
CFRunLoopRunInMode(kCFRunLoopDefaultMode, milliseconds/1000.0, false) ;
在 while 循环中模拟 C++ 中的事件循环。当我用 Nan 编写绑定时,我认为我不需要这部分代码,因为 Node 的事件循环会替我处理(当我只是运行服务器时)。但是,不会调用 C++ 回调。
如果我添加一个绑定来运行CFRunLoopRunInMode
,我会收到我想要的 HID 消息,但是主线程被阻塞并且服务器不工作。
然后我试着把setInterval/setImmediate/setTimeout/nextTick
和叫到CFRunLoopRunInMode
那里。它适用于大约一百个回调(HID 消息),然后我不再收到 C++ 回调。
我想,我需要一些可以在不阻塞主线程的情况下管理 C++ 回调的东西。希望我解释得足够清楚,如果我在术语/技术细节上犯了错误,我很抱歉。