我熟悉中的NodeJS流和我有一個問題:最簡單的NodeJS回聲服務器
我有什麼,我認爲可能是最簡單的NodeJS「回聲服務器」,即一臺服務器那麼簡單管道迴響應流無論它通過請求流接收到什麼。 它的工作原理,但有一個警告。客戶端僅在關閉提交流後才接收數據。 這裏是服務器代碼:
var http = require('http')
var server = http.createServer(function (req, res) {
req.pipe(res);
});
server.listen(8000);
這裏是我如何測試:
做了以下工作就好
term1> node server.js&
term2> echo 'hello world!'|curl --no-buffer --data-binary @- 'http://localhost:8000'
hello world!
但是,它只能是因爲回聲關閉其輸出文件描述符完成後,也就是說,服務器在客戶端完成發送內容之後纔會寫任何內容:
term2>
term2> yes|curl --no-buffer --data-binary @- 'http://localhost:8000'
(這裏這條線卡住永遠)
我認爲yes
將填補流緩衝區相當快,所以我會開始看到y回來很快。不幸的是,他們從未這樣做
這是預期嗎?我應該如何使用流/管道以達到預期的效果? 順便說一下,我不在乎輸出是否會以大塊的形式返回......我知道這將是流(或底層文件I/O)緩衝魔術的結果。
謝謝您的幫助
管道做了什麼?你是否總是在請求中調用它,並將http.createServer函數的響應傳遞給它? – Jwan622