詳解node.js的http模塊實(shí)例演示
上世紀(jì)六七十年代,紅岸基地一直在向茫茫外太空發(fā)送訊號(hào),當(dāng)葉文潔通過(guò)太陽(yáng)作為廣播,將地球的訊號(hào)向外發(fā)送時(shí),宇宙的各個(gè)先進(jìn)文明都接收到了訊號(hào),其中就包括了離我們最近的三體星。
本篇用node.js的http模塊模擬這一事件。
let http = require('http') // 創(chuàng)建一個(gè)web服務(wù)器 let server = http.createServer() server.on('request', function () { console.log('我們接收到了一個(gè)用原始膜發(fā)送訊號(hào)的文明,這個(gè)文明竟然完全不知道宇宙的黑暗森林法則,我們暫不清理她,觀察下這個(gè)文明的狀態(tài)') }) let port = 8000 server.listen(port, function () { console.log('在瀏覽器訪(fǎng)問(wèn): http://127.0.0.1:' + port + ', 你將把你的請(qǐng)求發(fā)送到宇宙中...') })
開(kāi)啟服務(wù):
☁ 01 [master] :zap: node 08.js
在瀏覽器訪(fǎng)問(wèn): http://127.0.0.1:8000, 你將把你的請(qǐng)求發(fā)送到宇宙中...
我們接收到了一個(gè)用原始膜發(fā)送訊號(hào)的文明,這個(gè)文明竟然完全不知道宇宙的黑暗森林法則,我們暫不清理她,觀察下這個(gè)文明的狀態(tài)
由于服務(wù)端沒(méi)有給客戶(hù)端響應(yīng),因?yàn)榭蛻?hù)端一直在等待響應(yīng)
http服務(wù).gif
當(dāng)我們的請(qǐng)求被三體星獲取到后,三體人由于自己的母星不宜生存,在ETO組織的協(xié)助下,三體星準(zhǔn)備入侵地球,以下是ETO與三體星的通信:
三體指令
let http = require('http') let fs = require('fs') // 創(chuàng)建一個(gè)web服務(wù)器 let server = http.createServer() server.on('request', function (req, res) { let url = req.url if (url === '/') { // 設(shè)置編碼格式,避免中文亂碼 res.setHeader('Content-Type', 'text/plain; charset=utf-8') res.end('歡迎來(lái)到三體世界') } else if (url === '/point') { console.log('地球人不知道有黑暗森林的存在,葉文潔悟出了這個(gè)道理,并啟發(fā)了羅輯,我們要讓ETO殺了羅輯') fs.readFile('./data/threeBody.html', function (err, data) { if (err) { res.setHeader('Content-Type', 'text/plain; charset=utf-8') res.end('星際網(wǎng)絡(luò)出故障了,文件讀取不到') } else { // 發(fā)送html文件,需要表示文件頭是 text/html res.setHeader('Content-Type', 'text/html; charset=utf-8') res.end(data) } }) } else if (url === '/photo') { console.log('ETO要看我們的星際環(huán)境,給他們傳送張圖片吧') fs.readFile('./data/threeBody.jpeg', function (err, data) { if (err) { res.setHeader('Content-Type', 'text/plain; charset=utf-8') res.end('星際網(wǎng)絡(luò)出故障了,圖片讀取不到') } else { // 發(fā)送圖片用的是二進(jìn)制格式 res.end(data) } }) } else { res.setHeader('Content-Type', 'text/plain; charset=utf-8') res.end('消息已沉入茫茫宇宙中...') } }) // 自定義端口 let port = 8000 server.listen(port, function () { console.log('與三體的通信又搭建成功,在瀏覽器訪(fǎng)問(wèn): http://127.0.0.1:' + port) })
三體通信服務(wù).gif
每次改動(dòng)服務(wù)端的代碼,都需要重啟服務(wù)
關(guān)于http模塊的api使用說(shuō)明,詳見(jiàn) http模塊文檔
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
nodejs報(bào)digital?envelope?routines::unsupported錯(cuò)誤的最新解決方法
這篇文章主要介紹了nodejs報(bào)digital?envelope?routines::unsupported錯(cuò)誤的最新解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02Nodejs學(xué)習(xí)筆記之測(cè)試驅(qū)動(dòng)
本文是本系列文章的第二篇,主要是測(cè)試針對(duì)于web后端的驅(qū)動(dòng),在開(kāi)發(fā)過(guò)程中,在開(kāi)發(fā)完成一段代碼后如果負(fù)責(zé)任而不是說(shuō)完全把問(wèn)題交給測(cè)試人員去發(fā)現(xiàn)的話(huà),這個(gè)時(shí)候通常都會(huì)去做一些手動(dòng)的測(cè)試。2015-04-04nodejs獲取表單數(shù)據(jù)的三種方法實(shí)例
在開(kāi)發(fā)中經(jīng)常需要獲取form表單的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于nodejs獲取表單數(shù)據(jù)的三種方法,方法分別是form表單傳遞、ajax請(qǐng)求傳遞以及表單序列化,需要的朋友可以參考下2021-06-06nodejs版本過(guò)高導(dǎo)致vue-cli項(xiàng)目無(wú)法正常運(yùn)行的幾種解決方案
這篇文章主要給大家介紹了關(guān)于nodejs版本過(guò)高導(dǎo)致vue-cli項(xiàng)目無(wú)法正常運(yùn)行的幾種解決方案,在項(xiàng)目中你可能需要用到的node版本太低,但是你所下的node版本是最新的,這時(shí)候就會(huì)報(bào)錯(cuò),需要的朋友可以參考下2023-07-07Node.js中package.json中庫(kù)的版本號(hào)(~和^)
這篇文章主要介紹了Node.js中package.json中庫(kù)的版本號(hào)(~和^),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04Linux系統(tǒng)中利用node.js提取Word(doc/docx)及PDF文本的內(nèi)容
這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)中利用node.js提取Word(doc/docx)及PDF文本的內(nèi)容,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面跟著小編來(lái)一起看看吧。2017-06-06詳解使用vscode+es6寫(xiě)nodejs服務(wù)端調(diào)試配置
本篇文章主要介紹了使用vscode+es6寫(xiě)nodejs服務(wù)端調(diào)試配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09