相關推薦:《》
剛剛開始學js,本文是基於node.js和websocket實現一個簡單的線上聊天室系統(聊天群)。
本文適合純小白閱讀。
廢話不多說,我們正式開始。
在B/S架構中,我們要得到一個資料,要向伺服器請求,然後伺服器響應。那麼如果我們使用者端不傳送請求,伺服器會不會主動給我們的使用者端(瀏覽器)發東西呢?
答案是不會的,使用者端和伺服器通過TCP/IP協定進行連線,然後通過HTTP協定進行請求連線。而HTTP協定是一個請求—響應式的協定,而且它是一個無狀態的協定,即每一次請求—響應之間是沒有關係的。
而我們的聊天室需要什麼呢?
1.傳送訊息 2.接收訊息
在接收訊息中:一個使用者端給伺服器傳送訊息,伺服器接收訊息,然後主動發給另一個使用者端。
所以HTTP滿足不了我們的要求。這裡我們就要用到socket協定。當伺服器與使用者端連線後,兩者都會時刻做著收發訊息的準備。
首先在npm中下載socket.io模組(之前要安裝了node.js才行)。開啟cmd。
(我建立了一個node.js chat資料夾,檔案都放在這裡面)
然後開始寫我們的伺服器程式碼,建立檔案server.js。
//server.js var http = require('http'); var fs = require('fs'); var ws = require('socket.io'); //引入socket.io var server = http.createServer(function (req, res) { var html = fs.readFileSync('./client.html'); //client.html是傳送給使用者端的檔案(使用者端介面) res.end(html); }).listen(8000); var io = ws(server); //http服務與ws服務相關聯, 返回io服務範例 //監聽使用者的連線事件 io.on('connection',function (socket) { //發生在使用者連線io伺服器時 console.log('有新使用者進入房間'); //訊息傳送事件 socket.on('message',function (obj) { console.log(obj); io.emit('message',obj); //傳送訊息給所有使用者端(廣播) }); });
然後開始寫使用者端。
因為我們伺服器用的是socket.io,所以在使用者端中應該使用socket.io相對應的服務。此處我直接引入了一個js檔案。
建立檔案client.html。
//client.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Node.js+webSocket聊天室</title> </head> <body> <h1>liky聊天室</h1> <textarea name="" id="text" ></textarea> <button id="btn">傳送</button> <script src="http://wulv5.com/js/socket.io.min.js"></script> <script> var socket = io.connect("/"); //連線聊天室的io伺服器 io伺服器的根地址 var oText = document.getElementById("text"); var oBtn = document.getElementById("btn"); var myMessage = ""; oBtn.onclick = function () { var mes = oText.value; //當訊息為空時 if(!mes){ return; } myMessage = mes; socket.send(mes); //傳送訊息到伺服器 oText.value = ""; //清空文字方塊 } //當伺服器廣播訊息時,觸發message事件,訊息內容在回撥函數中 socket.on('message',function (mm) { var p = document.createElement('p'); p.innerText = mm; if(myMessage === mm){ p.style.cssText = "color:red;margin-left:10%"; } document.body.appendChild(p); }) </script> </body> </html>
到此,程式碼部分就完成了。接下來開啟cmd,執行我們的檔案。
現在就可以開啟瀏覽器看一下效果啦。開啟瀏覽器,存取地址http://localhost:8000/。多開啟幾個頁面來試試效果。
這樣,一個簡單的本地聊天室就完成啦。可以傳到伺服器上,就可以和別人一起聊天啦(這個有空我再寫一下)。
更多程式設計相關知識,請存取:!!
以上就是node.js建立簡單聊天室的方法介紹的詳細內容,更多請關注TW511.COM其它相關文章!