首页 > 代码库 > NodeJS实现简单聊天室
NodeJS实现简单聊天室
转载:https://cnodejs.org/topic/53787247cbcc396349fe3f5a
npm install express --save
npm install socket.io --save
chat.js
var express = require(‘express‘);var io = require(‘socket.io‘);var app = express();app.use(express.static(__dirname));var server = app.listen(8888);var ws = io.listen(server);ws.on(‘connection‘, function(client) { console.log(‘someone is connect.\n‘); client.on(‘join‘, function(msg) { if (checkNickname(msg)) { client.emit(‘nickname‘, ‘昵称重复‘); } else { client.nickname = msg; ws.sockets.emit(‘announcement‘, ‘系统‘, msg + ‘加入了聊天室‘, {type: ‘join‘, name: getAllNickname()}); } }); client.on(‘send.message‘, function(msg) { client.broadcast.emit(‘send.message‘, client.nickname, msg); }); client.on(‘disconnect‘, function() { if (client.nickname) { client.broadcast.emit(‘send.message‘, ‘系统‘, client.nickname + ‘离开聊天室‘); } });});var checkNickname = function(name) { for (var k in ws.sockets.sockets) { if (ws.sockets.sockets.hasOwnProperty(k)) { if (ws.sockets.sockets[k] && ws.sockets.sockets[k].nickname == name) { return true; } } } return false;}var getAllNickname = function() { var result = []; for (var k in ws.sockets.sockets) { if (ws.sockets.sockets.hasOwnProperty(k)) { result.push({name: ws.sockets.sockets[k].nickname}); } } return result;}
chat.html
<!DOCTYPE html><html><head><title>socket.io聊天室例子</title><meta charset="utf-8"><link rel="stylesheet" href="css/reset.css" /><link rel="stylesheet" href="css/bootstrap.css" /><link rel="stylesheet" href="css/app.css" /></head><body><div class="wrapper"> <div class="content" id="chat"> <ul id="chat_container"> </ul> </div> <div class="action"> <textarea></textarea> <button class="btn btn-success" id="clear">清屏</button> <button class="btn btn-success" id="send">发送</button> </div></div><script type="text/javascript" src="socket.io.js"></script><script type="text/javascript">var ws = io.connect(‘http://127.0.0.1:8888‘);var sendMsg = function(msg) { ws.emit(‘send.message‘, msg);}var addMessage = function(from, msg) { var li = document.createElement(‘li‘); li.innerHTML = ‘<span>‘ + from + ‘</span>‘ + ‘ : ‘ + msg; document.querySelector(‘#chat_container‘).appendChild(li); document.querySelector(‘#chat‘).scrollTop = document.querySelector(‘#chat‘).scrollHeight; document.querySelector(‘textarea‘).focus();}var send = function() { var ele_msg = document.querySelector(‘textarea‘); var msg = ele_msg.value.replace(‘\r\n‘, ‘‘).trim(); //console.log(msg); if (!msg) return; sendMsg(msg); addMessage(‘你‘, msg); ele_msg.value = ‘‘;}ws.on(‘connect‘, function() { var nickname = window.prompt(‘输入你的昵称‘); while (!nickname) { nickname = window.prompt(‘昵称不能为空‘); } ws.emit(‘join‘, nickname);});ws.on(‘nickname‘, function() { var nickname = window.prompt(‘昵称重复‘); while (!nickname) { nickname = window.prompt(‘昵称不能为空‘); } ws.emit(‘join‘, nickname);});ws.on(‘send.message‘, function(from, msg) {addMessage(from, msg);});ws.on(‘announcement‘, function(from, msg) {addMessage(from, msg);});document.querySelector(‘textarea‘).addEventListener(‘keypress‘, function(event) { if (event.which == 13) { send(); }});document.querySelector(‘textarea‘).addEventListener(‘keydown‘, function(event) { if (event.which == 13) { send(); }});document.querySelector(‘#send‘).addEventListener(‘click‘, function() { send();});document.querySelector(‘#clear‘).addEventListener(‘click‘, function() { document.querySelector(‘#chat_container‘).innerHTML = ‘‘;});</script></body></html>
NodeJS实现简单聊天室
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。