區別:1、nodejs是一種JS執行環境,而WebSocket是一種通訊協定;2、nodejs用於方便地搭建響應速度快、易於擴充套件的網路應用,而WebSocket可使得使用者端和伺服器之間的資料交換變得更加簡單,允許伺服器端主動向使用者端推播資料。
本教學操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。
nodejs是什麼
Node是一個基於Chrome V8引擎的JavaScript執行環境,一種讓JavaScript執行在伺服器端的開發平臺, 用於方便地搭建響應速度快、易於擴充套件的網路應用。Node 使用事件驅動, 非阻塞I/O 模型而得以輕量和高效,非常適合在分散式裝置上執行資料密集型的實時應用。
Node採用了一個稱為「事件迴圈(event loop)」的架構,使得編寫可延伸性高的伺服器變得既容易又安全。提高伺服器效能的技巧有多種多樣。Node選擇了一種既能提高效能,又能減低開發複雜度的架構。這是一個非常重要的特性。並行程式設計通常很複雜且佈滿地雷。Node繞過了這些,但仍提供很好的效能。
Node採用一系列「非阻塞」庫來支援事件迴圈的方式。本質上就是為檔案系統、資料庫之類的資源提供介面。向檔案系統傳送一個請求時,無需等待硬碟(定址並檢索檔案),硬碟準備好的時候非阻塞介面會通知Node。該模型以可延伸的方式簡化了對慢資源的存取, 直觀,易懂。尤其是對於熟悉onmouseover、onclick等DOM事件的使用者,更有一種似曾相識的感覺。
雖然讓Javascript執行於伺服器端不是Node的獨特之處,但卻是其一強大功能。不得不承認,瀏覽器環境限制了我們選擇程式語言的自由。任何伺服器與日益複雜的瀏覽器使用者端應用程式間共用程式碼的願望只能通過Javascript來實現。雖然還存在其他一些支援Javascript在伺服器端 執行的平臺,但因為上述特性,Node發展迅猛,成為事實上的平臺。
15個Nodejs應用場景
我們已經對Nodejs有了初步的瞭解,接下來看看Nodejs的應用場景。
1 Web開發:Express + EJS + Mongoose/MySQL
express 是輕量靈活的Nodejs Web應用框架,它可以快速地搭建網站。Express框架建立在Nodejs內建的Http模組上,並對Http模組再包裝,從而實際Web請求處理的功能。
ejs是一個嵌入的Javascript模板引擎,通過編譯生成HTML的程式碼。
mongoose 是MongoDB的物件模型工具,通過Mongoose框架,可以進行存取MongoDB的操作。
mysql 是連線MySQL資料庫的通訊API,可以進行存取MySQL的操作。
通常用Nodejs做Web開發,需要3個框架配合使用,就像Java中的SSH。
2 REST開發:Restify
restify 是一個基於Nodejs的REST應用框架,支援伺服器端和使用者端。restify比起express更專注於REST服務,去掉了express中的template, render等功能,同時強化了REST協定使用,版本化支援,HTTP的例外處理。
3 Web聊天室(IM):Express + http://Socket.io
socket.io一個是基於Nodejs架構體系的,支援websocket的協定用於時時通訊的一個軟體包。socket.io 給跨瀏覽器構建實時應用提供了完整的封裝,socket.io完全由javascript實現。
4 Web爬蟲:Cheerio/Request
cheerio 是一個為伺服器特別客製化的,快速、靈活、封裝jQuery核心功能工具包。Cheerio包括了 jQuery核心的子集,從jQuery庫中去除了所有DOM不一致性和瀏覽器不相容的部分,揭示了它真正優雅的API。Cheerio工作在一個非常簡 單,一致的DOM模型之上,解析、操作、渲染都變得難以置信的高效。基礎的端到端的基準測試顯示Cheerio大約比JSDOM快八倍(8x)。 Cheerio封裝了@FB55相容的htmlparser,幾乎能夠解析任何的 HTML 和 XML document。
5 Web部落格:Hexo
Hexo 是一個簡單地、輕量地、基於Node的一個靜態部落格框架。通過Hexo我們可以快速建立自己的部落格,僅需要幾條命令就可以完成。
釋出時,Hexo可以部署在自己的Node伺服器上面,也可以部署github上面。對於個人使用者來說,部署在github上好處頗多,不僅可以省 去伺服器的成本,還可以減少各種系統運維的麻煩事(系統管理、備份、網路)。所以,基於github的個人站點,正在開始流行起來….
6 Web論壇: nodeclub
Node Club 是用 Node.js 和 MongoDB 開發的新型社群軟體,介面優雅,功能豐富,小巧迅速, 已在Node.js 中文技術社群 CNode 得到應用,但你完全可以用它搭建自己的社群。
7 Web幻燈片:Cleaver
Cleaver 可以生成基於Markdown的簡報。如果你已經有了一個Markdown的檔案,30秒就可以製作成幻燈片。Cleaver是為Hacker準備的工具。
8 前端包管理平臺: bower.js
Bower 是 twitter 推出的一款包管理工具,基於nodejs的模組化思想,把功能分散到各個模組中,讓模組和模組之間存在聯絡,通過 Bower 來管理模組間的這種聯絡。
9 OAuth認證:Passport
Passport項 目是一個基於Nodejs的認證中介軟體。Passport目的只是為了「登陸認證」,因此,程式碼乾淨,易維護,可以方便地整合到其他的應用中。Web應用 一般有2種登陸認證的形式:使用者名稱和密碼認證登陸,OAuth認證登陸。Passport可以根據應用程式的特點,設定不同的認證機制。本文將介紹,使用者 名和密碼的認證登陸。
10 定時任務工具: later
Later 是一個基於Nodejs的工具庫,用最簡單的方式執行定時任務。Later可以執行在Node和瀏覽器中。
11 瀏覽器環境工具: browserify
Browserify 的出現可以讓Nodejs模組跑在瀏覽器中,用require()的語法格式來組織前端的程式碼,載入npm的模組。在瀏覽器中,呼叫browserify編譯後的程式碼,同樣寫在<script>標籤中。
用 Browserify 的操作,分為3個步驟。1. 寫node程式或者模組, 2. 用Browserify 預編譯成 bundle.js, 3. 在HTML頁面中載入bundle.js。
12 命令列程式設計工具:Commander
commander 是一個輕巧的nodejs模組,提供了使用者命令列輸入和引數解析強大功能。commander源自一個同名的Ruby專案。commander的特性:自 記錄程式碼,自動生成幫助,合併短引數(「ABC」==「-A-B-C」),預設選項,強制選項,命令解析,提示符。
13 Web控制檯工具: tty.js
tty.js 是一個支援在瀏覽器中執行的命令列視窗,基於node.js平臺,依賴socket.io庫,通過websocket與Linux系統通訊。特性:支援多 tab視窗模型; 支援vim,mc,irssi,vifm語法; 支援xterm滑鼠事件; 支援265色顯示; 支援session。
14 使用者端應用工具: node-webwit
Node-Webkit 是NodeJS與WebKit技術的融合,提供一個跨Windows、Linux平臺的使用者端應用開發的底層框架,利用流行的Web技術 (Node.JS,JavaScript,HTML5)來編寫應用程式的平臺。應用程式開發人員可以輕鬆的利用Web技術來實現各種應用程式。Node- Webkit效能和特色已經讓它成為當今世界領先的Web技術應用程式平臺。
15 作業系統: node-os
NodeOS 是採用NodeJS開發的一款友好的作業系統,該作業系統是完全建立在Linux核心之上的,並且採用shell和NPM進行包管理,採用NodeJS不 僅可以很好地進行包管理,還可以很好的管理指令碼、介面等。目前,Docker和Vagrant都是採用NodeOS的首個版本進行構建的。
websocket是什麼
WebSocket是一種在單個TCP連線上進行全雙工通訊的協定。WebSocket通訊協定於2011年被IETF定為標準RFC 6455,並由RFC7936補充規範。WebSocket API也被W3C定為標準。
WebSocket使得使用者端和伺服器之間的資料交換變得更加簡單,允許伺服器端主動向使用者端推播資料。在WebSocket API中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以建立永續性的連線,並進行雙向資料傳輸。
WebSocket能幹些啥?
1)通知功能:
保持一個長連線,當伺服器端遊新的訊息,能夠實時的推播到使用方。像知乎的點贊通知、評論等,都可以使用WebSocket通訊。
某些使用H5的使用者端,為了簡化開發,也會使用WebSocket進行訊息的通知,由於它是實時推播的,會有更好的使用者體驗。
2)資料收集:
一些次優級別的資料,比如行為紀錄檔、trace、異常執棧收集等,都可以開闢專門的WebSocket通道進行傳輸。這能夠增加資訊的集中度,並能及時的針對使用者的行為進行合適的設定推播。由於大多數瀏覽器核心都支援,它將使使用者端APM程式設計模型變得簡單。
3)加密 && 認證:
雖然使用Fiddler、Charles等能夠抓到很多WebSocket包。但如果同時開啟SSL,傳輸加密後的二進位制資料,會大幅增加破解的成本,會安全的多。
4)反向控制勾點:
這個...由於是雙工長連線,伺服器端完全可以推播一些勾點命令,甚至直接是程式碼,在使用者端進行執行。比如截個屏,錄個音,種個小馬。使用者只要通過了授權申請,剩下的就隨你發揮了。
nodejs和websocket的區別
區別一:
Node是一個基於Chrome V8引擎的JavaScript執行環境,一種讓JavaScript執行在伺服器端的開發平臺。
WebSocket是一種在單個TCP連線上進行全雙工通訊的協定。
區別二:
Node用於方便地搭建響應速度快、易於擴充套件的網路應用。
WebSocket使得使用者端和伺服器之間的資料交換變得更加簡單,允許伺服器端主動向使用者端推播資料。
更多node相關知識,請存取:!!
以上就是nodejs和websocket的區別是什麼的詳細內容,更多請關注TW511.COM其它相關文章!