2015-12-10 2 views
0

Единственное, что я знаю, это то, что Node.js не следует использовать для интенсивных задач ЦП. Теперь представьте, что у меня есть сервер node.js, который получает аудиопоток от нескольких клиентов (от MIC). Этот звук буферизуется в аддоне c/C++, делая memcpy (что очень быстро). Но когда срабатывает событие end, этот аддон будет преобразовывать «аудио-в команду» и отправлять его клиенту. Это преобразование потребляет 75 мс (макс.). Можно ли считать Node.js надежным решением этой проблемы? 75ms можно считать интенсивной задачей в node.js? Какое максимальное время рекомендуется для блокировки операций?NodeJS - Надежность

+1

Hey @carduh, хороший вопрос! Не могли бы вы немного изменить содержание названия, чтобы сделать его более информативным? Прямо сейчас это немного расплывчато – nick

+0

@nick что-нибудь конкретное? – carduh

+1

Ну, я мог бы отредактировать его сам, но это ваш вопрос :) Я мог бы предложить что-то, связанное с блокировкой/синхронными операциями/etc, потому что из того, что вы описываете, это не проблема надежности, а вопрос о том, является ли Node правильное решение для этой задачи. – nick

ответ

2

Блокировка не является способом Node.js.

Вы можете выполнить эту операцию асинхронно (в отдельном потоке) без каких-либо блокировок и вызвать обратный вызов из своего аддона, когда операция будет завершена, поэтому поток основных узлов.js не будет заблокирован и сможет для обработки других запросов.

Есть хорошие помощники, такие как AsyncWorker и AsyncQueueWorker в NAN.

https://github.com/nodejs/nan

Также есть C++ библиотека для работы с WebSockets, так что я думаю о прямой связи между клиентами и аддоном.

Смежные вопросы