我被困住了。这是我第一次使用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 ++回调的东西。希望我解释清楚,如果我在术语/技术细节方面犯了错误,那就很抱歉。