1. 程式人生 > >nodejs做服務端多功能的簡單實現

nodejs做服務端多功能的簡單實現

nodejs 做服務端基本功能實現

http服務

  • express 模組

資料庫服務

  • mysql模組

UDP訊息下發和接收

  • dgram 模組
  • 服務端:echoServerUdp.js
  • 客戶端:echoClientUdp.js
  • web伺服器中一般使用udp的客戶端將頁面的udp訊息請求轉發到java,c程式等,詳見login.js(41-81)

websocket服務,實現簡單的聊天伺服器和頁面資料實時重新整理

  • ws 模組
  • websocket的服務端開啟的是基於tcp的雙工通訊,可與nodejs服務寫在一起,同時開啟即可(注意埠不能衝突),詳見login.js(84-110)

nodejs http請求攔截器

  • 作用: 防止未登入的使用者或許可權不夠的使用者訪問資料庫等資原始檔夾,造城不安全隱患
  • 實現原理: nodejs的http請求可以被多級過濾,例如請求: ‘/getData’ 這個介面,可以先經過 ‘/*’ 來判斷請求中是否有合法的cookie 或 session ,驗證通過後,呼叫 next() 方法可將該請求交給 app.post(‘/getData’) 繼續處理
  • 詳見 login.js(116-147)
  • 作用:使用者身份認證,使用者登入限制
  • 原理: cookie是http請求頭中的一個欄位,內容是一個json,其中的sid等欄位都可以在服務端設定,也可以在收到客戶端請求是拿來驗證使用者身份
  • 詳見:login.js 中的http請求攔截器和 ‘/login’ 介面

vue + axios 前後端互動的實現

axios 的http請求攔截和響應攔截

  • 作用: 請求攔截可以給每次發起的http請求都加上相同的欄位,例如: www/index.html 中除了登入請求以外的所有http請求都加了 { user: ‘admin’} 請求引數;響應攔截可以針對服務端傳送過來的異常資料做攔截,然後做出對應的處理
  • 優勢: 可以大大減少相同的程式碼的書寫次數,精簡程式碼,同時也可以大大降低錯誤機率
  • 注意: http請求攔截和響應攔截方法的作用域,儘量設定為全域性方法,以免漏掉某些請求

websocket協議實現簡單的web聊天

  • 原理:使用者先向服務端傳送一次http請求,服務端的websocket埠收到該請求後將本次http協議請求升級到基於tcp通訊的websocket協議,並與該客戶端形成一條互相通訊的通道,此間服務端可主動向客戶端傳送資料,客戶端的onmessage方法可接收並處理服務端傳送過來的訊息,直到服務端發起關閉通道的訊息才結束
  • 客戶端:詳見 www/js/wsClint.js
  • socket = new WebSocket(“ws://192.168.0.21:8081/”); 開啟websocket客戶端連線
  • 聊天室就是基本的顯示一些資訊,點擊發送按鈕時,向服務端傳送tcp訊息即可

websocket實現表格實時重新整理

  • 原理同上
  • 優勢: 相較於頁面設定定時器定時發起http請求查詢資料庫的方法,這樣的重新整理佔用系統記憶體更少
  • 適用場景: 需要實時重新整理,並且長時間監測的頁面(如股票K線圖等)
  • 客戶端:詳見 www/js/wsClint.js
  • 訊息處理詳見: www/index.html