MST
星途 面试题库

面试题:Node.js 中如何使用Socket.io实现分布式系统节点间简单通信

请阐述在Node.js环境下,利用Socket.io搭建分布式系统节点间通信的基本步骤,包括如何初始化项目、安装依赖、配置服务器端与客户端代码来实现消息的发送与接收。
24.9万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试

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 的分布式系统节点间简单的消息发送与接收。实际应用中,可能需要处理更复杂的业务逻辑、安全认证等内容。