摘要:首先將的包拷貝到你的項(xiàng)目文件下,并在部分使用標(biāo)簽將其添加進(jìn)去使用專業(yè)的函數(shù)創(chuàng)建一個端點(diǎn)當(dāng)在消息框輸入消息并點(diǎn)擊發(fā)送按鈕時,客戶端就將向服務(wù)器端發(fā)送輸入的消息,消息類型是。
我此前曾發(fā)過一遍文章有關(guān)于如何利用node.js+websocket搭建一個簡單的多人聊天室有興趣的朋友可以關(guān)注我的技術(shù)客棧---濤濤技術(shù)客棧。今天學(xué)習(xí)了websocket的一個框架---socket.io后瞬間感覺神清氣爽,頓感從無盡的回調(diào)函數(shù)中解脫出來,今天我將繼續(xù)就多人聊天室這個demo來和大家分享一下如何利用socket.io來創(chuàng)建它。
安裝socket.io所需的包眾所周知,node.js采用了包結(jié)構(gòu)進(jìn)行管理,所以我們在使用一些模塊(modules)時必須使用npm(install package managment,即安裝包管理工具)安裝socket.io,安裝時仍需安裝在你的node.js中npm的node_modules目錄下,例如在我的電腦中的安裝路徑是這樣的:D:Node.jsnode_modulesnpmnode_modules
最后只有npm install -g socket.io安裝socket.io(必須使用-g進(jìn)行全局安裝),接下來進(jìn)行項(xiàng)目的編寫。
創(chuàng)建客戶端客戶端如下:
websocket
【1】
ChatRoom
【2】 var socket = io("ws://localhost:3000");
document.getElementById("sendBtn").onclick = function() { var txt = document.getElementById("sendTxt").value; if(txt){
【3】 socket.emit("message",txt);
} } **socket.on("enter",function(data){
【4】 showMessage(data,"enter");
})** **socket.on("message",function(data){
【5】 showMessage(data,"message");
})** **socket.on("left",function(data){ showMessage(data,"left");
【6】 })**
function showMessage(str,type) { var div = document.createElement("div"); div.innerHTML = str; if(type=="enter"){ div.style.color = "blue"; }else if(type=="left"){ div.style.color = "red"; } document.body.appendChild(div); }
說明:代碼中重要的部分我都進(jìn)行了加粗并進(jìn)行編號,下面我們來分析這些重要的代碼。
首先將socket.io的包拷貝到你的項(xiàng)目文件下,并在head部分使用script標(biāo)簽將其添加進(jìn)去
使用socket.io專業(yè)的函數(shù)創(chuàng)建一個websocket端點(diǎn)
當(dāng)在消息框輸入消息并點(diǎn)擊發(fā)送按鈕時,客戶端就將向服務(wù)器端發(fā)送輸入的消息,消息類型是message。
當(dāng)有新的用戶進(jìn)入聊天室時,服務(wù)器就會向全部的客戶端廣播這樣一條消息:userxx comes in
當(dāng)任意一個客戶端向服務(wù)器發(fā)送消息時,服務(wù)器就會將這條消息廣播給全部的客戶端。
當(dāng)有任一客戶端離開時,服務(wù)器就會向全部客戶端廣播這樣一條消息:userxx left
創(chuàng)建服務(wù)器端服務(wù)器端代碼:
【1】 var app = require("http").createServer()
【2】 var io = require("socket.io")(app)
var PORT = 3000 var clientCount = 0
【3】 app.listen(PORT)
【4】 io.on("connection",function(socket){
clientCount++ socket.nickname = "user"+clientCount
【5】 io.emit("enter",socket.nickname+" comes in")
【6】 socket.on("message",function(str){
**io.emit("message",socket.nickname+" say:"+str)** })
【7】 socket.on("disconnect",function(){
io.emit("left",socket.nickname+" left") }) }) console.log("websocket listening on port:"+PORT)
很顯然使用了socket.io來創(chuàng)建服務(wù)器端非常簡潔、方便,大家是不是感覺這代碼看起來就很清爽呀。代碼中的重要部分我都進(jìn)行了加粗標(biāo)記及編號處理,下面我跟大家分享一下重要的代碼。
首先我們需要一個綁定使用http協(xié)議的變量:app
接下來我們還需要創(chuàng)建一個使用socket.io這個modules的變量并且綁定http變量
這個綁定了http的變量也需要監(jiān)聽服務(wù)器端的端口號
當(dāng)有一個客戶端與服務(wù)器端進(jìn)行連接時就調(diào)用回調(diào)函數(shù)
接下來當(dāng)觸發(fā)“enter”事件時服務(wù)器端向客戶端廣播這樣一條消息:userxx comes in
當(dāng)有客戶端向服務(wù)器端發(fā)送消息時就會觸發(fā)message事件,這時服務(wù)器端向全部客戶端廣播該客戶端向服務(wù)器端發(fā)送的消息。
當(dāng)有客戶端關(guān)閉時socket.io就會調(diào)用自身的disconnect事件,并且向全部客戶端廣播這樣一條消息,userxx left。
以上就是關(guān)于我分享使用socket.io來創(chuàng)建一個簡單的多人聊天室的一個小demo,以為大家積極評論。最后附上項(xiàng)目運(yùn)行的結(jié)果截圖及源碼下載地址。
項(xiàng)目源碼地址是:
鏈接:http://pan.baidu.com/s/1qXVhYuo 密碼:2x2c
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91917.html
摘要:首先將的包拷貝到你的項(xiàng)目文件下,并在部分使用標(biāo)簽將其添加進(jìn)去使用專業(yè)的函數(shù)創(chuàng)建一個端點(diǎn)當(dāng)在消息框輸入消息并點(diǎn)擊發(fā)送按鈕時,客戶端就將向服務(wù)器端發(fā)送輸入的消息,消息類型是。 我此前曾發(fā)過一遍文章有關(guān)于如何利用node.js+websocket搭建一個簡單的多人聊天室有興趣的朋友可以關(guān)注我的技術(shù)客棧---濤濤技術(shù)客棧。今天學(xué)習(xí)了websocket的一個框架---socket.io后瞬間感覺...
摘要:免費(fèi)全網(wǎng)獨(dú)家這是一份非常值得珍藏的知識體系一簡述是一個完全由實(shí)現(xiàn)基于支持的協(xié)議用于實(shí)時通信跨平臺的開源框架,它包括了客戶端的和服務(wù)器端的?;趯?shí)現(xiàn)聊天功能最后,感謝你的到來,恭喜你,堅(jiān)持到了最后,該文和源碼若有不當(dāng)之處,請予以斧正。 【免費(fèi)】全網(wǎng)獨(dú)家:這是一份非常值得珍藏的Android知識體系?。?! 一、簡述 Socket.IO是一個完全由JavaScript實(shí)現(xiàn)、基...
摘要:的總結(jié)在一個聊天室系統(tǒng)中,常常使用作為通信的主要方式。服務(wù)端對客戶端所發(fā)送的請求進(jìn)行處理登陸驗(yàn)證等操作在這里,通過來接受客戶端所傳遞的數(shù)據(jù),為相同方法名,其后跟的函數(shù)為登陸驗(yàn)證的具體操作,比如用戶驗(yàn)證是否存在。 websocket的總結(jié) 在一個聊天室系統(tǒng)中,常常使用websocket作為通信的主要方式。參考地址:https://www.jianshu.com/p/00e... 關(guān)于自...
閱讀 854·2021-11-24 10:44
閱讀 2790·2021-11-11 16:54
閱讀 3192·2021-10-08 10:21
閱讀 2096·2021-08-25 09:39
閱讀 2914·2019-08-30 15:56
閱讀 3466·2019-08-30 13:46
閱讀 3502·2019-08-23 18:09
閱讀 2089·2019-08-23 17:05