nodejs socket.io实现多人聊天室
时间: 2023-06-13 20:04:58 浏览: 54
要实现多人聊天室,可以使用 Node.js 和 socket.io 库。下面是一个简单的实现:
1. 安装 Node.js 和 socket.io
首先需要安装 Node.js 和 socket.io。可以在命令行中使用以下命令安装:
```
npm install node
npm install socket.io
```
2. 创建服务端
创建一个名为 `server.js` 的文件,用来启动服务端。
```
const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
app.use(express.static(__dirname + '/public'));
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
socket.on('chat message', function(msg){
console.log('message: ' + msg);
io.emit('chat message', msg);
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
```
这里使用了 Express 库来创建一个 web 服务器,然后使用 socket.io 库来实现实时通信。当有新用户连接时,会在控制台输出一条日志;当有用户断开连接时,也会输出一条日志。在收到用户发送的消息时,会将消息广播给所有连接的用户。
3. 创建客户端
创建一个名为 `index.html` 的文件,用来启动客户端。
```
<!doctype html>
<html>
<head>
<title>Chat Room</title>
</head>
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
var socket = io();
$('form').submit(function(e){
e.preventDefault();
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
});
</script>
</body>
</html>
```
这里使用了 jQuery 库来简化 DOM 操作。当用户提交表单时,会将消息发送给服务端,然后清空输入框。当收到消息时,会将消息添加到页面上。
4. 启动应用
在命令行中运行以下命令启动服务端:
```
node server.js
```
然后在浏览器中打开 `http://localhost:3000`,即可进入聊天室。可以打开多个浏览器窗口,模拟多个用户同时聊天的场景。