用node.js 实现聊天室,完成用户登陆,与保存在文件中的用户名及密码进行匹配,匹配成功允许登陆,否则不允许
时间: 2024-05-12 21:20:33 浏览: 11
实现聊天室需要使用Socket.IO模块,在此不再赘述,下面重点介绍如何实现用户登陆及匹配。
1. 创建一个用户信息文件,用于保存用户名和密码信息,例如:users.json
2. 使用Node.js的fs模块读取该文件中的用户信息,代码如下:
```javascript
const fs = require('fs');
// 读取用户信息文件
const users = JSON.parse(fs.readFileSync('./users.json', 'utf8'));
```
3. 在Socket.IO中监听用户连接事件,当用户连接时,发送登陆页面给客户端。
```javascript
io.on('connection', (socket) => {
// 发送登陆页面给客户端
socket.emit('login');
});
```
4. 监听客户端发送的登陆请求,获取客户端发送的用户名和密码,然后匹配用户信息。
```javascript
socket.on('login', (data) => {
const { username, password } = data;
// 匹配用户信息
const user = users.find((user) => user.username === username && user.password === password);
if (user) {
// 登陆成功
socket.emit('loginSuccess');
} else {
// 登陆失败
socket.emit('loginFail');
}
});
```
5. 在客户端监听登陆成功和失败事件,根据事件类型显示相应的提示信息。
```javascript
// 登陆成功事件
socket.on('loginSuccess', () => {
alert('登陆成功!');
});
// 登陆失败事件
socket.on('loginFail', () => {
alert('用户名或密码错误!');
});
```
完整代码如下:
```javascript
const fs = require('fs');
const server = require('http').createServer();
const io = require('socket.io')(server);
// 读取用户信息文件
const users = JSON.parse(fs.readFileSync('./users.json', 'utf8'));
io.on('connection', (socket) => {
// 发送登陆页面给客户端
socket.emit('login');
// 监听客户端发送的登陆请求
socket.on('login', (data) => {
const { username, password } = data;
// 匹配用户信息
const user = users.find((user) => user.username === username && user.password === password);
if (user) {
// 登陆成功
socket.emit('loginSuccess');
} else {
// 登陆失败
socket.emit('loginFail');
}
});
});
server.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});
```