這篇文章主要介紹如何搭建nodejs http服務(wù)器,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)相山免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
搭建簡(jiǎn)單的nodejs服務(wù)器
通過(guò)一些簡(jiǎn)單配置我們就可以搭建一臺(tái)基于nodejs的http服務(wù)器
通過(guò)switch配置url路由的方法
// 這是一個(gè)簡(jiǎn)單的Node HTTP服務(wù)器,能處理當(dāng)前目錄的文件 // 并能實(shí)現(xiàn)兩種特殊的URL用于測(cè)試 // 用HTTP://localhost:8000或http://127.0.0.1:8000連接這個(gè)服務(wù)器 // 首先加載所有需要用到的模塊 var http = require('http'); // 加載http服務(wù)api模塊 var fs = require('fs'); // 加載fs文件服務(wù)api模塊 var server = new http.Server(); // 創(chuàng)建新的HTTP服務(wù)器 var urlapi = require('url'); // 創(chuàng)建url路由api模塊 server.listen(8000); // 監(jiān)聽端口8000 // 使用on方法注冊(cè)事件處理,該事件一直被監(jiān)聽,任何的請(qǐng)求都會(huì)進(jìn)入回調(diào)函數(shù),執(zhí)行相應(yīng)的操作 server.on('request', function(request, response) { // 當(dāng)有request請(qǐng)求的時(shí)候觸發(fā)處理函數(shù) // 解析請(qǐng)求的URL var url = urlapi.parse(request.url); //監(jiān)聽請(qǐng)求的網(wǎng)站,以當(dāng)前腳本目錄為根目錄的url地址 console.log(url.pathname); // 特殊URL會(huì)讓服務(wù)器在發(fā)送響應(yīng)前先等待 switch(url.pathname) { //判斷請(qǐng)求的路徑信息 case ''||'/' : // 處理請(qǐng)求的網(wǎng)站根目錄,指定加載對(duì)應(yīng)的文件夾,一般以根目錄的index.html為默認(rèn),nodejs是高效流處理的方案,也可以通過(guò)配置文件來(lái)配置 fs.readFile("./page/index.html", function(err, content){ //打開請(qǐng)求的文件 if(err) { //輸出錯(cuò)誤信息,也可以自定義錯(cuò)誤信息 response.writeHead(404, { 'Content-Type':'text/plain; charset="UTF-8"' }); response.write(err.message); response.end(); } else { //請(qǐng)求成功返回?cái)?shù)據(jù) response.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' }); //告訴相應(yīng)頭文件,返回?cái)?shù)據(jù)的類型 response.write(content); //返回的內(nèi)容,有時(shí)候還會(huì)加上buter數(shù)據(jù)類型 response.end(); //結(jié)束響應(yīng),不寫的話,會(huì)一直處于響應(yīng)狀態(tài),頁(yè)面不會(huì)顯示內(nèi)容 } }); break; case '/test/delay':// 此處用于模擬緩慢的網(wǎng)絡(luò)連接 // 使用查詢字符串來(lái)獲取延遲時(shí)長(zhǎng),或者2000毫秒 var delay = parseInt(url.query) || 2000; // 設(shè)置響應(yīng)狀態(tài)和頭 response.writeHead(200, {'Content-type':'text/plain; charset=UTF-8'}); // 立即開始編寫響應(yīng)主體 response.write('Sleeping for' + delay + ' milliseconds...'); // 在之后調(diào)用的另一個(gè)函數(shù)中完成響應(yīng) setTimeout(function(){ response.write('done.'); response.end(); }, delay); break; case '/test/mirror':// 如果請(qǐng)求是test/mirror,則原文返回它 // 響應(yīng)狀態(tài)和頭 response.writeHead(200, {'Content-type':'text/plain; charset=UTF-8'}); // 用請(qǐng)求的內(nèi)容開始編寫響應(yīng)主體 response.write(request.mothod + ' ' + request.url + ' HTTP/' + request.httpVersion + '\r\n'); // 所有的請(qǐng)求頭 for (var h in request.headers) { response.write(h + ':' + request.headers[h] + '\r\n'); } response.write('\r\n');// 使用額外的空白行來(lái)結(jié)束頭 // 在這些事件處理程序函數(shù)中完成響應(yīng) // 當(dāng)請(qǐng)求主體的數(shù)據(jù)塊完成時(shí),把其寫入響應(yīng)中 request.on('data', function(chunk) { response.write(chunk); }); // 當(dāng)請(qǐng)求結(jié)束時(shí),響應(yīng)也完成 request.on('end', function(chunk){ response.end(); }); break; case '/json' : // 模擬JSON數(shù)據(jù)返回 // 響應(yīng)狀態(tài)和頭 response.writeHead(200, {'Content-type':'application/json; charset=UTF-8'}); response.write(JSON.stringify({test:'success'})); response.end(); break; default:// 處理來(lái)自本地目錄的文件,主要是一些靜態(tài)資源文件,搭建靜態(tài)服務(wù)器還有其他的方法 var filename = url.pathname.substring(1); // 去掉前導(dǎo)'/' var type = getType(filename.substring(filename.lastIndexOf('.')+1)); console.log(filename); //取得文件類型 css js .... // 異步讀取文件,并將內(nèi)容作為單獨(dú)的數(shù)據(jù)模塊傳給回調(diào)函數(shù) // 對(duì)于確實(shí)很大的文件,使用流API fs.createReadStream()更好 fs.readFile(filename, function(err, content){ if(err) { response.writeHead(404, { 'Content-Type':'text/plain; charset="UTF-8"' }); response.write(err.message); response.end(); } else { response.writeHead(200, { 'Content-Type' : type }); response.write(content); response.end(); } }); break; } }); //這里定義了一個(gè)用來(lái)判斷文件類型的函數(shù) function getType(endTag){ var type=null; switch(endTag){ case 'html' : type = 'text/html; charset=UTF-8'; break; case 'htm' : type = 'text/html; charset=UTF-8'; break; case 'js' : type = 'application/javascript; charset="UTF-8"'; break; case 'css' : type = 'text/css; charset="UTF-8"'; break; case 'txt' : type = 'text/plain; charset="UTF-8"'; break; case 'manifest' : type = 'text/cache-manifest; charset="UTF-8"'; break; default : type = 'application/octet-stream'; break; } return type; }
以上是“如何搭建nodejs http服務(wù)器”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞標(biāo)題:如何搭建nodejshttp服務(wù)器
文章來(lái)源:http://vcdvsql.cn/article42/pcdjhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)公司、小程序開發(fā)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)