2012-04-16 2 views
1

Согласно http.js, модуль модуля http узла блокируется: поток управления приостанавливается до тех пор, пока не будут отправлены все данные (текущая и все буферизованные данные).Non-blocking ClientRequest.write() для Node.js

Я хочу одновременно отправить большой объем данных, используя несколько параллельных соединений. Есть ли какой-либо (прямой) способ создания неблокирующей версии метода, аналогично ClientRequest.write(chunk,encoding,callback), где данные отправляются «в фоновом режиме», а обработчик обратного вызова (или событие) запускается, когда отправка завершена?

Заранее благодарен!

+0

Код изменилось с тех пор вы послали ссылку, так что трудно понять, где вы указываете на в коде. Тем не менее, я понимаю, что он не блокирует на сетевом уровне, насколько он блокируется в JavaScript. Таким образом, даже при этом «блокирующем» вызове вы можете иметь несколько параллельных соединений, и каждый из них может одновременно отправлять данные через провод. –

ответ

1

Использование потока Stream.pipe() для потока данных в несколько других потоков. например:

var w1 = fs.createWriteStream('input-1'); 
var w2 = fs.createWriteStream('input-2'); 
request.pipe(w1); 
request.pipe(w2);