js程式碼實現多人聊天室
本文例項為大家分享了js程式碼實現多人聊天室的具體程式碼,供大家參考,具體內容如下
設計要求:
1)使用者應通過註冊登入聊天室
2)聊天室可以顯示所有線上使用者
3)在每一條聊天內容之前,顯示發出這條聊天內容的使用者名稱。
4)可進行私密聊天。
5)當使用者進入和離開聊天室時,系統會在聊天室裡廣播
config.js 程式碼如下
module.exports={ "port":3000, "host":"127.0.0.1" }
broadcast.js 程式碼如下
exports.broadcast=function (data,users) { var from=data.from; var message=data.message; message = from+"說: "+message; //構建訊息 var send={ mstype:"broadcast", message:message }; send =new Buffer(JSON.stringify(send)); //遍歷使用者組所有使用者,出傳送方的所有使用者 for(var username in users){ if(username!=from){ users[username].write(send); } } };
Signup.js
程式碼如下
exports.signup = function (socket,data,users) { //獲取註冊使用者的使用者名稱 var username=data.username; if(!users[username]){ //不存在,則儲存使用者名稱和socket users[username]=socket; var send={ mstype:"signup", code:1000, username:username, message:"註冊成功" }; socket.write(JSON.stringify (send)); }else{//cunzai var send={ mstype:"signup", code:1001, message: "使用者名稱已被佔,請重新輸入使用者名稱" } socket.write(JSON.stringify(send)); } };
p2p.js
程式碼如下
exports.p2p=function (socket,data,users) { var from=data.from; var to=data.to; var message=data.message; var receiver=users[to]; if(!receiver){//接收方不存在 var send={ mstype:"p2p", code:2001, message:"使用者"+to+"不存在" } socket.write(JSON.stringify(send)); }else{ //存在則向接收方傳送資訊 var send={ mstype:"p2p", code:2000, from:from, message:from+"對你說"+message } receiver.write(JSON.stringify(send)); } };
Server伺服器端程式碼
/p2p 聊天室伺服器 var net=require("net"); var config=require("./config"); var broadcast=require("./broadcast"); var p2p=require("./p2p"); var signup=require("./signup"); var users={}; var server=net.createServer(); server.on ("connection",function (socket) { socket.on("data",function (data) { data = JSON.parse(data); switch (data.mstype) { case "signup": signup.signup(socket, data, users); break; case "broadcast": broadcast.broadcast(data, users); break; case "p2p": p2p.p2p(socket, data, users); break; default: break; } }); socket.on("error",function () { console.log("有客戶端異常退出了"); }); }); server.listen(config.port,config.host,function () { console.log("伺服器在埠"+config.port+"啟動監聽"); });
Client客戶端
程式碼如下:
var net=require("net"); var config=require("./config"); var Client=net.createConnection({ port:config.port, host:config.host }); var username; Client.on("connect",function () { console.log("請輸入使用者名稱:"); process.stdin.on("data",function (data){ data=data.toString().trim(); //判斷使用者是否已經存在 if(! username){ var send={ mstype:"signup", username:data }; Client.write(JSON.stringify(send)); return; } var regex=/(.{1,18}):(.+)/; var matches=regex=regex.exec(data); if(matches){ //能匹配則是p2p var from=username;//傳送方是自己 var to=matches[1];//發給誰 var message=matches[2]; //構造JSON形式資訊 var send={ mstype: "p2p", from:username, to:to, message:message }; Client.write(JSON.stringify(send)); }else{ //廣播 var send={ mstype:"broadcast", from:username, message:data }; Client.write(JSON.stringify(send)); } }); }); Client.on("data",function (data) { data=JSON.parse(data); switch (data.mstype) { case "signup": var code=data.code; switch (code) { case 1000: username=data.username; console.log(data.message); break; case 1001: console.log(data.message); break; default: break; } break; case "broadcast": console.log(data.message); break; case "p2p": var code=data.code; switch (code) { case 2000: console.log(data.message); break; case 2001: console.log(data.message); break; default: break; } break; default: break; } }); Client.on("error",function () { console.log("聊天室已關閉!!"); })
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援指令碼之家。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015113/viewspace-2869937/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python基於Socket實現簡易多人聊天室Python
- Java建立 多人聊天室Java
- js 實現程式碼雨效果JS
- Go語言專案實戰:多人聊天室Go
- Node.js+websocket+mongodb實現即時聊天室Node.jsWebMongoDB
- Node.js中TCP及聊天室的實現Node.jsTCP
- 用Java程式碼實現一個簡單的聊天室功能Java
- 幾道JS程式碼手寫題以及一些程式碼實現JS
- 原生Node 實現聊天室
- 基於Netty實現的WebSocket聊天室--支援多人同時線上及定時心跳檢測NettyWeb
- “兩行”程式碼,幫你快速實現FaceTime的新多人視訊通話效果
- Vue開發多人聊天室 覆盤總結Vue
- 三行程式碼實現 JS 柯里化行程JS
- 一百行js程式碼實現一個校驗工具JS
- Websocket 直播間聊天室教程 - GoEasy 快速實現聊天室WebGo
- [練手專案]Gin+websocket 的多人聊天室Web
- 使用emscripten實現js直接呼叫C程式碼(emscripten的初探)JSC程式
- js技巧:十幾行的程式碼實現vue.watchJSVue
- 精讀《用160行js程式碼實現一個React》JSReact
- Node.js - 200 多行程式碼實現 Websocket 協議Node.js行程Web協議
- 常見排序演算法原理及JS程式碼實現排序演算法JS
- 網站返回頂部jquery js實現程式碼方式案例網站jQueryJS
- laravel5.4實現實時聊天室Laravel
- Vue.js 原始碼實現Vue.js原始碼
- html實體編碼遇上js程式碼HTMLJS
- 【Azure Developer】App Service + PubSub +JS 實現多人版黑客帝國文字流效果圖DeveloperAPPJS黑客
- 用go實現併發聊天室Go
- Swoole+React 實現的聊天室React
- 聊天室原始碼開發,如何簡單的實現掃碼登入功能?原始碼
- 可能這裡有你想要的js手寫程式碼實現JS
- JS手寫Promise程式碼ES6方式實現JSPromise
- SpringBoot 實戰 (十七) | 整合 WebSocket 實現聊天室Spring BootWeb
- 聊天室應用開發實踐(二):實現基於 Web 的聊天室Web
- JAVA通訊(三)——實現多人聊天Java
- 程式碼分享:體現js靈活性的def.jsJS
- Tomcat程式碼實現Tomcat
- Promise 程式碼實現Promise
- 能用js實現的最終用js實現,Shell指令碼也不例外JS指令碼