NodeJS服務器:一行代碼 = 一個的HTTP服務器


從這一篇開始,我們進入技術講解的話題,逐步實現用NodeJS實現文件的傳送共享服務。

前文我們講過,NodeJS是最擅長做網絡服務器的,今天我們就來用NodeJS做一個最簡單的服務器。

先看一幅圖:

如圖中所畫,當一個小孩子還很小的時候,如果有叔叔阿姨跟他打招呼,逗他玩,他幾乎用相同的方式回應。

今天我們要做的HTTP服務器也一樣,啟動之后,不管是那個客戶端連接上來,它都統一用Hi回應。

1、下載安裝NodeJS

 推薦大家到官方網站:https://nodejs.org/ 下載最新版本的NodeJS。

 以Windows為例,你可以下載.msi安裝包,也可以單獨下載node.exe文件。

 為了項目講訴的一致性,我們假設將NodeJS安裝到d:\iLinkIT。

 驗證安裝是否正確:

 打開命令行工具,執行node -v,如果顯示NodeJS的版本,則說明已經安裝完畢,如下圖所示。

 

2. 編寫HTTP服務器端程序

打開一個文本編輯器,例如:Notepad++,輸入如下代碼,然后將文件另存為 ilinkit.js ,編碼格式選擇:utf-8格式。

1 var http = require( 'http' );
2 
3 var server =http.createServer( function ( request ,response ){
4           response.end( 'Hi' );
5 } );
6 server.listen( 8000 );
7 console.log( 'HTTP服務器啟動中,端口:8000.....' );

這樣,一個HTTP服務器就寫好了。細心的同學可能會說:標題黨!明明不是一行代碼嘛!

了解JavaScript的朋友都知道,把上面的代碼放到同一行是沒有問題的,另外,其實這個服務器最核心的部分,可以寫成下面的形式:

http.createServer( function ( request ,response ){ response.end( 'Hi' ); } ).listen( 8000 );

當然了,我們不推薦這種方式,因為很難理解,我們可以在把JavaScript的功能都調通之后,發布時用壓縮工具壓縮代碼。

下面我們逐行解釋一下每行代碼的含義,以序號來指代。

第1行:加載一個http的模塊,加載成功后保存到一個名稱為 http 的變量中。

第3行:調用http對象的createServer()函數,創建一個服務器,並傳入一個匿名的回調函數,用來響應客戶端的請求。

request,response是不是很熟悉?沒錯!和JSP等后台語言類似,

request代表了客戶端的請求,客戶端是用GET,還是用POST的方法提交的數據?提交的路徑是什么?這些信息都通過request對象獲取到。

response代表了服務端對客戶端的響應,服務端是給客戶端響應一個文本?還是響應一個文件?數據類型是什么?狀態碼是多少,這些信息都通過response對象向客戶端響應。

第4行:表示不管客戶端的請求是什么,服務端向客戶端統一反饋一個文本:Hi。

第6行:啟動的服務器,在端口8000監聽客戶端的請求。

第7行:console是NodeJS的全局屬性,用來向標准輸出設備(這里是命令行窗口)輸出內容。

3. 測試HTTP的服務器的效果

啟動命令行,進入到ilinkit.js 所在的目錄,然后執行下面的語句:

>node ilinkit.js

這時候,顯示如下的內容,表示HTTP服務器已經啟動。

我們打開一個瀏覽器,輸入:http://localhost:8000

瀏覽器將會顯示:Hi

再輸入:http://localhost:8000/helloworld

瀏覽器還是顯示:Hi

......

因為我們這個簡單的服務器,設計的邏輯就是,不管客戶端的請求是什么,服務端的響應都是一樣的Hi。

4. 退出NodeJS服務器

在命令行中,連續按2次 Ctrl + C 即可退出NodeJS。

至此,一個簡單的HTTP服務器就已經完成了,它就像一個小嬰兒,還不會說話,只會用Hi來對這個世界做出響應。

是不是很簡單?希望能給你帶來一個充滿信心的開頭^_^~

-----------------------愛蓮(iLinkIT)系列文章------------------------------------------

 緣起愛蓮:我要的,現在就要!

愛蓮(iLinkIT)的架構與原理

遇見NodeJS:JavaScript的貴人

NodeJS服務器:一行代碼 = 一個的HTTP服務器

NodeJS文件讀取:感恩常在--抓把糖果,愉悅客人

NodeJS緩存機制:暢銷貨,就多囤一點唄

NodeJS安全設計:好吃的草莓味糖果,只給好朋友小紅

NodeJS服務器退出:完成任務,優雅退出

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM