当前位置:实例文章 » HTML/CSS实例» [文章]使用 Node.js 和 Socket.io 构建可创建、可加入房间的实时聊天室

使用 Node.js 和 Socket.io 构建可创建、可加入房间的实时聊天室

发布人:shili8 发布时间:2025-03-05 07:03 阅读次数:0

**使用 Node.js 和 Socket.io 构建可创建、可加入房间的实时聊天室**

在本文中,我们将使用 Node.js 和 Socket.io 来构建一个可创建、可加入房间的实时聊天室。这个聊天室允许用户创建新的房间,并且可以加入已经存在的房间。

**环境准备**

首先,我们需要安装必要的依赖包:

bashnpm install express socket.io


**服务器端代码**

下面是服务器端的代码:

javascript// server.jsconst express = require('express');
const app = express();
const server = require(' />const io = require('socket.io')(server);

let rooms = {};

app.use(express.static(__dirname + '/public'));

io.on('connection', (socket) => {
 console.log('客户端连接');

 // 当客户端创建新房间时 socket.on('createRoom', (roomName) => {
 if (!rooms[roomName]) {
 rooms[roomName] = [];
 io.emit('newRoom', roomName);
 }
 });

 // 当客户端加入房间时 socket.on('joinRoom', (roomName, username) => {
 if (rooms[roomName]) {
 rooms[roomName].push(username);
 io.to(roomName).emit('newUser', username);
 } else {
 console.log(`房间 ${roomName}不存在`);
 }
 });

 // 当客户端发送消息时 socket.on('sendMessage', (roomName, message) => {
 if (rooms[roomName]) {
 io.to(roomName).emit('newMessage', username, message);
 } else {
 console.log(`房间 ${roomName}不存在`);
 }
 });

 // 当客户端断开连接时 socket.on('disconnect', () => {
 console.log('客户端断开连接');
 });
});

server.listen(3000, () => {
 console.log('服务器启动在  />});


**客户端代码**

下面是客户端的代码:

javascript// client.jsconst socket = io.connect(' />
// 创建新房间document.getElementById('create-room').addEventListener('click', () => {
 const roomName = document.getElementById('room-name').value;
 socket.emit('createRoom', roomName);
});

// 加入房间document.getElementById('join-room').addEventListener('click', () => {
 const roomName = document.getElementById('room-name').value;
 const username = document.getElementById('username').value;
 socket.emit('joinRoom', roomName, username);
});

// 发送消息document.getElementById('send-message').addEventListener('click', () => {
 const roomName = document.getElementById('room-name').value;
 const message = document.getElementById('message').value;
 socket.emit('sendMessage', roomName, message);
});


**HTML**

下面是 HTML 的代码:

html<!-- index.html -->

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>实时聊天室</title>
 <style>
 #room-name {
 width:200px;
 height:30px;
 padding:10px;
 font-size:16px;
 border:1px solid #ccc;
 }
 #username {
 width:200px;
 height:30px;
 padding:10px;
 font-size:16px;
 border:1px solid #ccc;
 }
 #message {
 width:300px;
 height:50px;
 padding:10px;
 font-size:16px;
 border:1px solid #ccc;
 }
 #send-message {
 background-color: #4CAF50;
 color: #fff;
 padding:10px20px;
 border: none;
 border-radius:5px;
 cursor: pointer;
 }
 #create-room {
 background-color: #4CAF50;
 color: #fff;
 padding:10px20px;
 border: none;
 border-radius:5px;
 cursor: pointer;
 }
 #join-room {
 background-color: #4CAF50;
 color: #fff;
 padding:10px20px;
 border: none;
 border-radius:5px;
 cursor: pointer;
 }
 </style>
</head>
<body>
 <h1>实时聊天室</h1>
 <input id="room-name" type="text" placeholder="房间名称">
 <button id="create-room">创建新房间</button>
 <input id="username" type="text" placeholder="用户名">
 <button id="join-room">加入房间</button>
 <input id="message" type="text" placeholder="消息内容">
 <button id="send-message">发送消息</button>
 <script src="/socket.io/socket.io.js"></script>
 <script src="client.js"></script>
</body>
</html>


**总结**

在本文中,我们使用 Node.js 和 Socket.io 构建了一个可创建、可加入房间的实时聊天室。这个聊天室允许用户创建新的房间,并且可以加入已经存在的房间。我们还提供了客户端和服务器端的代码示例,以及 HTML 的代码示例。

其他信息

其他资源

Top