今天我們來介紹一下nodeJS服務端的開發,nodeJS服務端的開發相對於使用C或C++服務來說要簡單很多,那爲什麼會有這樣的效果呢?最主要有兩方面的原因。
第一個原因就是nodeJS本身就提供了很多功能強大的模塊,我們只要使用這些模塊就能開發出各種各樣的服務端程序,另外一個方面是由於是有很多第三方的公司和個人開發者開發出了很多不錯的模塊,我們也可以直接拿過來用。 換句話說,就是nodeJS的整個兒的這個生態鏈,所以這樣我們可以找到各種各樣的這個模塊兒,然後經過排列組合就可以達到我們想要的效果,那麼我們就舉一個具體的例子來看看如何開發一個nodeJS服務端程序。
我們這個例子就是開發一個最簡單的Http服務,其實開發這樣一個服務通過nodeJS是非常簡單的,只要執行下面幾步就可以做到了。
require引入http模塊
第一步是使用require引入http模塊,那麼這個http模塊nodeJS自己支持的,這個require就相當於java中的inport關鍵字,所以大家一對比就比較好理解了。
創建http服務
第二步是通過引入的Http模塊然後調用創建Http服務方法,那麼就將Http服務給創建成功了。
偵聽端口
第三步就是指定你要偵聽的端口,比如我們常用的8080,或者我們真正對外開放的80端口。你只要指定端口,那麼整個http服務就算開發完成並且能夠處理正常的http請求了。
我們創建一個文件夾https_server,裏面創建一個文件server.js
// 使用嚴格模式, 方式js語法漏洞
'use strict'
// 1、引入http模塊
var http = require('http');
var fs = require('fs');
// 2、使用http創建一個服務 ip地址監聽所有網卡
var app = http.createServer(function(req, res){
// 設置一個http頭 200表示響應成功
res.writeHead(200, {'Content-Type': 'text/plain'});
// 輸出Hello world
res.end('HTTPS:Hello World!\n');
}).listen(8080, '0.0.0.0');
// 這樣最簡單的服務程序就算寫完了
我們現在將這個服務啓動起來,因爲之前我們已經將nodeJS裝好了。
直接輸入 node server.js
我在開一個命令行窗口登錄以後,輸入 netstat -ntpl
就可以查到所有的TCP的端口,我們可以看到8080處於偵聽狀態,他所在的ip就是0.0.0.0,也就是說如果我這臺機子雙網卡或者三網卡的話,三個網卡所綁定的每一個ip地址都可以接受這個請求,如果你是一個網卡的話那就無所謂了。
下面我們可以通過瀏覽器訪問這個請求
這樣就可以訪問了
但是現在遇到一個問題,就是當我們關閉命令行之後,也就是Ctrl+C之後,服務也就停止了。
但是我們一般關閉命令行窗口,服務仍然在運行的,這裏就直接結束了,這個是什麼原因呢?那就是因爲他沒有在後臺運行。
所以說我們在啓動nodeJS的時候有很多種方式 ,那麼第一種就是
node 服務文件名.js
這樣就可以將服務起來,當你窗口關閉的時候,這個服務就自動結束了。所以就不能稱之爲服務端程序,服務端程序要一直運行纔行。
第二種方式 通過
nohub node 服務名.js &
如:nohub node server.js &
但是這種方式它的日誌輸出會有問題
第三種方式 通過
安裝 forever
npm install forever -g
MAC 下
sudo npm install forever -g
運行 forever start 服務.js
如: forever start server.js
forever最終還是調的node命令將node啓動起來,但是他直接將node設置成後臺運行的狀態。
停止 forever stop 服務名.js
如: forever stop server.js
這時就停止了
我們檢查一下正在偵聽的端口
netstat -ntpl
我們發現就 沒有8080端口了
netstat -ntpl | grep 8080
那麼這節我們介紹如何通過nodeJS開發一個最簡單的服務端程序就到此結束了。