2016-06-03 2 views
0

Я не привык к node.js, и мне нужен совет. Мне нужно создать клиент, который сможет открыть соединение сокета с уже построенным сервером Java, а затем захватить и отправить аудио с микрофона. В то же время клиент может получать текстовые сообщения с сервера. Сервер может принимать входящий аудиопоток и отправлять текст обратно клиенту в одно и то же время, но я не знаю, возможно ли то же самое в node.js.Сокет Node.js посылает и принимает одновременно

Как мог клиент node.js записывать и читать из сокетного соединения одновременно без блокировки? Я полагаю, что функции read() и write() должны выполняться параллельно. Эта задача в Java решается с использованием двух потоков, но я знаю, что node.js является однопоточным.

Я преуспел до сих пор, чтобы установить некоторые модули узлов для записи звука и сохранить его как файл на диске. Также мне удалось открыть сокет и отправить эти файлы на сервер, получив обратно текстовые сообщения. Теперь мне нужен только непрерывный процесс.

ответ

0

node.js является асинхронным по своей природе, как правило, вы просите систему записать в сокет и обеспечить обратный вызов для завершения операции. Поэтому функция socket.write не будет блокировать другой код.

socket.write("Something", function() { 
    // Something is written to the socket... what next? 
}); 

socket.on("data", function(data) { 
    // Handle new portion of data 
}); 
+0

Обратный вызов '' data '' вызван только тогда, когда данные получают _received_ в сокете, а не когда данные записываются, правильно? Я, по сути, спрашиваю, если, поскольку вы предоставили неназванную функцию обратного вызова 'socket.write()', она, в свою очередь, не вызовет обратный вызов '' data ''? – villapx

+1

@villapx right «data» event испускается только тогда, когда данные получены из сокета и не связаны с записью. –

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