我知道的一件事是Node.js不应该用于密集的CPU任务。现在,假设我有一个node.js服务器接收来自多个客户端(来自MIC)的音频流。通过执行memcpy
(非常快)将此音频缓存在c / c ++插件中。但是当触发end
事件时,此插件将转换“audio-to-command”并将其发送给客户端。此转换消耗75毫秒(最大)。 Node.js可以被认为是解决这个问题的可靠方法吗? 75ms可以被认为是node.js中的一项密集型任务?建议阻止操作的最长时间是多少?
答案 0 :(得分:2)
阻止不是Node.js方式。
您可以异步(在单独的线程中)进行此操作,不会发生任何阻塞,并在操作完成时从您的插件调用回调,因此主节点.js线程不会被阻止,并且能够处理其他请求。
在NAN中有很好的帮助程序,如AsyncWorker和AsyncQueueWorker。
还有C ++库可以使用WebSockets,所以我会考虑客户端和插件之间的直接连接。