發表於 30天計劃NodeJSNodeJS--30天計劃

【NodeJS】Http Server 與 ReadStream 的相遇 –30天計畫 -3

前言:

延續昨天的 Server 練習
如果想要回傳一大堆文字的話要怎麼辦
所以我就去找了一下剛好找到XD
今天就是分享一下這個方法吧!

小小目錄:

  • ReadString & WriteStream
  • 運用在 Server Response 上
  • http 套件
  • fs     套件

前置準備:

因為需要一篇很長很長的文章
我就去網路上找到一篇很長很長的文章在多複製貼上幾次了~

ReadString & WriteStream:

因為要用到fs就來練習一下很大篇幅的文章要怎麼分段(chunk)讀進來吧!

var fs = require("fs");

// Essay from https://alastaircampbell.org/2011/10/a-very-long-essay-on-political-communications-french-style/
var RS = fs.createReadStream(__dirname + "/A (very long) essay on political communications, French style.txt", "utf8");
var WS = fs.createWriteStream(__dirname+"writeMe.txt", "utf8");

RS.on("data", function(chunk){

console.log("收到一段chunk啦~");
console.log(chunk);

// 直接寫進去就可以了!
WS.write(chunk);
});

 

因為繼承了 event.EventEmitter 所以可以監聽事件
所以可以監聽到 「收到data」這個事件發生!!
所以就可以將每一段data(chunk)都利用WriteStream寫進去!

運用在 Server Response 上:

那現在就可以把他跟昨天的簡易 Server 串起來了~

var http = require("http"),
    fs=require("fs");

var server = http.createServer(function(req, res){

  res.writeHead(200, {"Content-Type":"text/plain"});
  varRS=fs.createReadStream("../Stream and Buffer/A (very long) essay on political communications, French style.txt");
  RS.pipe(res);

});

server.listen(8050, "0.0.0.0");

首先利用 res.writeHead 來確定這是沒有錯誤的回應~ 所以要用 200

再來是要明確標出這份回傳是怎麼樣的格式 鎖鑰要說出他的 Content-Type text/plain

另外可以利用 pipe 將 Stream 裡面拿到的所有 chunk 都直接轉接到 response裡面
所以 response 會一份一份接!
然後就可以把瀏覽器打開(我都用FireFox啦(戰!XD)
localhost:8050/              就可以看到你那篇很長很長的文章啦~

基本上今天的練習到這邊
我已經有想好下一次開始要練習什麼了XD
來做一個小專案好了~!!!(興奮 (・`ω´・ ●)

那今天就先這樣吧~
如果大家有甚麼想要討論或是想要說的都可以在底下留言啦!
我有看到都一定會回的
明天見囉~
掰掰~~

作者:

一位 熱愛資工領域、喜歡好笑事物、偶爾打打網球 的學生 ! For A Better Me!

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.