前言:
延續昨天的 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
來做一個小專案好了~!!!(興奮 (・`ω´・ ●)
那今天就先這樣吧~
如果大家有甚麼想要討論或是想要說的都可以在底下留言啦!
我有看到都一定會回的
明天見囉~
掰掰~~