nodejs socket.io实现多人聊天室 包含显示在线人数与名称和登入登出提醒功能
时间: 2023-06-13 15:04:53 浏览: 61
要实现一个基于 Node.js 和 socket.io 的多人聊天室,您需要遵循以下步骤:
1. 安装 Node.js 和 socket.io
2. 创建一个新的 Node.js 项目
3. 在项目根目录下创建一个名为 index.js 的文件
4. 在 index.js 中引入 socket.io 模块:
```javascript
const io = require('socket.io')(server);
```
5. 创建一个 HTTP 服务器对象:
```javascript
const server = require('http').createServer();
```
6. 监听 HTTP 服务器对象:
```javascript
server.listen(3000, () => {
console.log('Server listening on port 3000');
});
```
7. 在客户端页面上引入 socket.io.js:
```html
<script src="/socket.io/socket.io.js"></script>
```
8. 在客户端代码中连接到服务器:
```javascript
const socket = io.connect('http://localhost:3000');
```
9. 在服务器端监听客户端连接事件:
```javascript
io.on('connection', (socket) => {
console.log('Client connected');
});
```
10. 在服务器端监听客户端发送消息事件:
```javascript
socket.on('message', (data) => {
console.log(`Message received: ${data}`);
});
```
11. 在客户端发送消息到服务器:
```javascript
socket.emit('message', 'Hello, server');
```
12. 实现聊天室的在线人数与名称显示功能:
```javascript
io.on('connection', (socket) => {
console.log('Client connected');
// 发送在线人数和名称
io.emit('online', {
count: io.engine.clientsCount,
names: Object.keys(io.sockets.sockets).map((id) => io.sockets.sockets[id].username),
});
});
```
13. 实现客户端登入登出提醒功能:
```javascript
io.on('connection', (socket) => {
console.log('Client connected');
// 发送登入提醒
socket.broadcast.emit('login', {
username: socket.username,
});
// 发送在线人数和名称
io.emit('online', {
count: io.engine.clientsCount,
names: Object.keys(io.sockets.sockets).map((id) => io.sockets.sockets[id].username),
});
// 监听登出事件
socket.on('disconnect', () => {
console.log('Client disconnected');
// 发送登出提醒
socket.broadcast.emit('logout', {
username: socket.username,
});
// 发送在线人数和名称
io.emit('online', {
count: io.engine.clientsCount,
names: Object.keys(io.sockets.sockets).map((id) => io.sockets.sockets[id].username),
});
});
});
```
以上就是基于 Node.js 和 socket.io 实现多人聊天室的主要步骤和代码实现。