從這一篇開始,我們進入技術講解的話題,逐步實現用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)系列文章------------------------------------------