Node.js+websocket+mongodb實現即時聊天室

BothEyes1993發表於2019-01-27

ChatRoom

Node.js+websocket+mongodb實現即時聊天室

A,nodejs簡介:Node.js是一個可以讓javascript執行在伺服器端的平臺,它可以讓javascript脫離瀏覽器的束縛執行在一般的伺服器下面,你可以用Node.js輕鬆地進行伺服器端應用的開發。Node.js是一個為實時Web應用開發而誕生的平臺,它充分考慮了在實時響應和超大規模資料下架構的可擴充套件性,這使得它摒棄了傳統的平臺依靠多執行緒來實現高併發的的設計思路,而採用了單執行緒,非同步式I/O和事件驅動的設計模式。這些特性不僅帶來了巨大的效能提升,還減少了多執行緒程式設計的複雜性,從而提高了開發效率。

B,websocket:websocket協議是html5中的一種新的協議,它實現了瀏覽器與伺服器的全雙工通訊。傳統的我們通過http協議實現即時通訊時是這樣做的,首先由瀏覽器對伺服器發出http request(請求),然後伺服器響應客戶端的瀏覽器。這種模式所帶來的弊端就是瀏覽器需要不斷的向伺服器發出請求。但是我們知道http request 的頭部(header)非常長,有時客戶端請求的只是很小的資料量卻要附帶這麼長的頭部資訊,這樣似乎在浪費網路頻寬。而是用websocket協議,這時瀏覽器和伺服器只需要進行一次握手的過程,之後,它們之間便形成了一條快速通道,接著就可以隨時互相傳送資料。這樣不但響應速度快,而且避免了每次都傳送請求頭。

C,mongodb資料庫:mongodb是一個面向文件的非關係型資料庫,它具有高效能,易部署,易使用,儲存資料方便等優點。它支援的資料結構很鬆散類似json格式。它也是面向集合的,資料被分組存放在資料集中,每個資料集就是一個集合,每個資料庫包含若干個集合。

D,實現和效果:下面要介紹的是使用nodejs實現的即時聊天室,主要用到的是websocket協議,資料庫中存放使用者民和密碼。首先伺服器開啟一個socket埠3000開始監聽客戶端的連線,接著客戶端瀏覽器建立socket連線,使用者登入時填寫使用者名稱和密碼,伺服器端查詢mongodb資料庫驗證使用者名稱和密碼是否正確,使用者登入聊天室後可以開始傳送訊息給其它線上的使用者。

登入頁面(賬號:123;密碼:456)
在這裡插入圖片描述
登入之後有兩個tab頁,Users使用者(一對一聊天),Rooms房間(多對多聊天)
在這裡插入圖片描述
在這裡插入圖片描述

GitHub地址:github.com/BothEyes199…

來源:https://juejin.im/post/5c4d51c4e51d4552411b16c7

相關文章