首頁>技術>

0.引言

本篇文章主要講解如何在服務端使用websocket。如果在服務端使用websocket,那就需要使用Node.js,就需要安裝nodejs-websocket。也可以參考前面的文章進行學習:

nodejs入門的學習教程:

https://www.runoob.com/nodejs/nodejs-tutorial.html

1.NodeJs簡述

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 執行環境。 Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型

Node 是一個讓 JavaScript 執行在服務端的開發平臺,它讓 JavaScript 成為與PHP、Python、Perl、Ruby 等服務端語言平起平坐的指令碼語言。 釋出於2009年5月,由Ryan Dahl開發,實質是對Chrome V8引擎進行了封裝。

Node對一些特殊用例進行最佳化,提供替代的API,使得V8在非瀏覽器環境下執行得更好。V8引擎執行Javascript的速度非常快,效能非常好。Node是一個基於Chrome JavaScript執行時建立的平臺, 用於方便地搭建響應速度快、易於擴充套件的網路應用。Node 使用事件驅動, 非阻塞I/O 模型而得以輕量和高效,非常適合在分散式裝置上執行資料密集型的實時應用。。通俗點說,node.js就是執行在服務端的JavaScript。

官網介面如下:

nodejs官網地址:

https://www.npmjs.com/package/nodejs-websocket

官網介面如下:

更詳細的學習,可以參考官網,官網給出的還是比較學習。

2.安裝NodeJs在伺服器端

(1)在指定的工程目錄,執行如下命令:

sudo npm init

or

如果不想使用Enter鍵,使用如下命令:

sudo npm init -y

執行目錄為這樣,連結如下:

執行過程的介面如下:

注意:如果需要要輸入字元的,那就一直輸入回車鍵就行了。

這樣最終會生成這個檔案,如下:

看看package.json是什麼內容,執行如下命令:

cat package.json

package.json內容如下介面:

1.1 安裝nodejs-websocket

安裝nodejs-websocket,在以下路徑:

(1)執行如下命令:

sudo npm install nodejs-websocket

執行過程如下:

這樣就會把websocket相關的元件下載到node_modules。下載後會生成node_modules和package-lock.jaon。

cd node_modules

cd nodejs-websocket/

如果對這些感興趣,可以去看看每個檔案。

2.Node的優點

Node作為一個新興的前端框架,後臺語言,有很多吸引人的地方:

RESTful API

單執行緒

Node可以在不新增額外執行緒的情況下,依然可以對任務進行併發處理 —— Node.js是單執行緒的。它透過事件迴圈(event loop)來實現併發操作,對此,我們應該要充分利用這一點 —— 儘可能的避免阻塞操作,取而代之,多使用非阻塞操作。

非阻塞IO

V8虛擬機器

事件驅動

3.NodeJs的Module

Node使用Module模組去劃分不同的功能,以簡化應用的開發。Modules模組有點像C++語言中的類庫。每一個Node的類庫都包含了十分豐富的各類函式,比如http模組就包含了和http功能相關的很多函式,可以幫助開發者很容易地對比如http,tcp/udp等進行操作,還可以很容易的建立http和tcp/udp的伺服器。

要在程式中使用模組是十分方便的,只需要如下:

在這裡,引入了http類庫,並且對http類庫的引用存放在http變數中了。這個時候,Node會在我們應用中搜索是否存在node_modules的目錄,並且搜尋這個目錄中是否存在http的模組。如果Node.js找不到這個目錄,則會到全域性模組快取中去尋找,使用者可以透過相對或者絕對路徑,指定模組的位置,比如:

var myModule = require('./myModule.js');

模組中包含了很多功能程式碼片斷,在模組中的程式碼大部分都是私有的,意思是在模組中定義的函式方法和變數,都只能在同一個模組中被呼叫。當然,可以將某些方法和變數暴露到模組外,這個時候可以使用exports物件去實現。

參考連結,如下地址:

https://baike.baidu.com/item/node.js/7567977?fromtitle=nodejs&fromid=11244313&fr=aladdin

https://www.npmjs.com/package/nodejs-websocket

官網介面如下:

4.NodeJs重要關注點

對於剛接觸NodeJs,主要關注一些比較重要的點就可以了(需要關注一系列的回撥函式),如下:

(1)怎樣建立websocket伺服器,透過createServer和listen介面。

(2)怎樣判斷有新的連線過來,createServer的回撥函式做判斷。

(3)怎樣判斷關閉事件,透過on("close", callback) 事件的回撥函式。

(4)怎樣判斷接收到資料,透過on("text",callback)事件的回撥函式。

(5)怎樣判斷接收異常,透過on("error",callback)事件的回撥函式。

(9)怎樣主動傳送資料,呼叫sendText。

參考的示例程式碼如下:

var ws = require("nodejs‐websocket") // Scream server example: "hi" ‐> "HI!!!" var server = ws.createServer(function (conn) { console.log("New connection") conn.on("text", function (str) { // 收到資料的響應 console.log("Received "+str) conn.sendText(str.toUpperCase()+"!!!") // 傳送 }) conn.on("close", function (code, reason) { // 關閉時的響應 console.log("Connection closed") }) conn.on("error", function (err) { // 出錯 console.log("error:" + err); }); }).listen(8001)

由上可以知道,依賴回撥函式實現,需要去實現回撥函式。

5.總結

30
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • nacos統一配置中心原始碼解析