【nodejs实打造多人实时聊天室】
生活随笔
收集整理的這篇文章主要介紹了
【nodejs实打造多人实时聊天室】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
server.js文件
// 加載net模塊 var net = require("net"); // 創建net實例對象 var server = net.createServer(); // 保存所有客戶的socket對象 var users = []; // 創建服務 server.on('connection', function (socket) { //a.告訴所有其他客戶,有新成員進來了// 遍歷客戶實例對象,通過套接字獲取客戶端口號users.forEach(function (client) {client.write(socket.remotePort + '進入聊天室》');});users.push(socket); //b.保存當前的socketsocket.on('data', function (data) { //c.設置當前socket的消息傳輸的處理方式data = data.toString().trim(); //一旦收到消息,就轉發給其他所有客戶users.forEach(function (uesr) {if (uesr != socket) {//不是自己uesr.write(socket.remotePort + ':' + data)}});})socket.on('error', function (err) {console.log(socket.remotePort + '退出聊天室');}) }) server.listen(3000, function () { //4.啟動監聽console.log('服務器已經在端口號3000啟動監聽。。。。。'); }) server.on('error', function () {console.log('服務器異常退出'); })client.js文件
//導入net var net = require('net'); // 創建連接,產生socket對象 var socket = net.createConnection({host: '127.0.0.1',port: 3000 }) // 輸入消息 socket.on('connect', function () {console.log('進入聊天室......');/*** 準備輸入聊天信息* nodejs中提供了process模塊,支持終端設備進行IO操作,全局模塊。不需要導入* stdin對象獲得鍵盤輸入(回車后)* 接收到鍵盤輸入,就將消息發送到服務器*/process.stdin.on('data', function (data) {socket.write(data.toString().trim());}); }) //接收消息 socket.on('data', function (data) {console.log(data.toString().trim()); }); socket.on('error', function (err) {console.log('服務器異常退出。'); })總結
以上是生活随笔為你收集整理的【nodejs实打造多人实时聊天室】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BCT2186 1A低压差线性稳压器
- 下一篇: Vue 项目中各种痛点问题及解决方案