面试题答案
一键面试1. 初始化项目
在终端中进入项目目录,执行以下命令初始化 package.json
文件:
npm init -y
该命令会快速生成一个默认配置的 package.json
文件,用于管理项目的依赖和脚本等信息。
2. 安装依赖
安装 socket.io
及其服务端和客户端相关依赖:
npm install socket.io socket.io-client
socket.io
是核心库,socket.io-client
用于客户端连接服务端。
3. 配置服务器端代码
创建一个 server.js
文件,编写如下代码:
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
// 监听连接
io.on('connection', (socket) => {
console.log('A user connected');
// 接收客户端消息
socket.on('clientMessage', (message) => {
console.log('Received from client:', message);
// 向所有连接的客户端广播消息
io.emit('serverMessage', 'Server received: ' + message);
});
// 监听断开连接
socket.on('disconnect', () => {
console.log('User disconnected');
});
});
const port = 3000;
server.listen(port, () => {
console.log(`Server running on port ${port}`);
});
上述代码首先引入所需模块,创建 Express 应用和 HTTP 服务器,并将 socket.io
挂载到服务器上。监听客户端连接,当有客户端连接时打印日志。监听 clientMessage
事件接收客户端消息,并向所有客户端广播处理后的消息。同时监听客户端断开连接事件。
4. 配置客户端代码
创建一个 client.js
文件,编写如下代码:
const io = require('socket.io-client');
const socket = io('http://localhost:3000');
// 连接成功
socket.on('connect', () => {
console.log('Connected to server');
// 向服务器发送消息
socket.emit('clientMessage', 'Hello, server!');
});
// 接收服务器消息
socket.on('serverMessage', (message) => {
console.log('Received from server:', message);
});
// 连接断开
socket.on('disconnect', () => {
console.log('Disconnected from server');
});
上述代码引入 socket.io-client
并连接到服务器。连接成功后向服务器发送消息,并监听 serverMessage
事件接收服务器返回的消息。同时监听断开连接事件。
5. 运行项目
在终端中分别运行服务器端和客户端代码:
- 服务器端:
node server.js
- 客户端:
node client.js
这样,就可以实现基于 Socket.io
的分布式系统节点间简单的消息发送与接收。实际应用中,可能需要处理更复杂的业务逻辑、安全认证等内容。