一個簡易server

Tim Berners-Lee寫出了第一個網(wǎng)頁、第一個瀏覽器和第一個服務(wù)器。
網(wǎng)頁我們見過,瀏覽器我們見過,但我們還沒見過服務(wù)器。
了解服務(wù)器的原理是非常重要的。

我們可以自己搞一個服務(wù)器,然后提供HTTP服務(wù)。

  1. 我們已經(jīng)有一個服務(wù)器了,我們所使用的電腦就是服務(wù)器。(相對我們的電腦,服務(wù)器有更好的CPU,更高的內(nèi)存,不需要顯卡和顯示器等)
  2. 但是我們還沒有提供HTTP服務(wù)的程序。

用腳本就可以提供HTTP服務(wù),我們就用Node.js腳本試試吧。

接收請求

用一個文件就可以實(shí)現(xiàn):

  1. 新建一個安全目錄,進(jìn)入目錄cd ~/Desktop; mkdir node-demo; cd node-demo
  2. touch server.js
  3. 編輯它,內(nèi)容
  4. 運(yùn)行node servernode server.js(會看到提示要加端口號)
  5. 根據(jù)提示調(diào)整命令
  6. 成功以后,這個server保持運(yùn)行(ctrl+c可中斷)

服務(wù)器完成。
這個服務(wù)器目前只有一個功能,就是打印出路徑和查詢字符串。
還缺少一個重要功能,發(fā)出HTTP響應(yīng)。

打開一個新的bash窗口,運(yùn)行curl http://localhost:你指定的端口號/xxxcrul http://127.0.0.1:你指定的端口號/xxx(或者直接用瀏覽器訪問)
你會發(fā)現(xiàn)server打印出了路徑。

$ node server-before.js 8888
監(jiān)聽 8888 成功
請用在空中轉(zhuǎn)體720度然后用電飯煲打開 http://localhost:8888
得到 HTTP 路徑
/xxx
查詢字符串為

不含查詢字符串的路徑為
/xxx

(如果你的手機(jī)和你的電腦在同一個內(nèi)網(wǎng)中,你可以試試用手機(jī)來訪問這個server,同樣會打印出路徑)

  1. 這說明server收到了我們用curl發(fā)出的請求;
  2. 但是由于server沒有發(fā)出響應(yīng),curl就一直等在那里,無法退出(ctrl+c中斷這個傻curl吧)。

發(fā)出響應(yīng)

接下來我們讓server發(fā)出響應(yīng)。

  1. 編輯server.js
  2. 在中間標(biāo)注區(qū)間添加兩行代碼
  response.write('Hi')
  response.end()
  1. 中斷之前的server,重新運(yùn)行node server 8888
  2. 運(yùn)行curl http://localhost:8888/xxx,結(jié)果如下:
 Hi% //%表示結(jié)尾,不想看到它可以把'Hi'換成'Hi\n'
  1. 好了,響應(yīng)添加成功
  2. 使用curl -s -v -- "http://localhost:8888/xxx"可以查看完整的請求和響應(yīng)

注意:

  1. 后綴是沒有用的,文件內(nèi)容是由HTTP頭中的Content-Type保證的;
  2. HTTP路徑不是文件路徑,/xxx.html不一定對應(yīng)xxx.html文件。
    這個腳本返回一個頁面( 代碼 )。注意路徑中的后綴都是混亂的,返回的內(nèi)容根據(jù)Content-Type而定。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容