MST
星途 面试题库

面试题:网络编程之Node.js与WebSocket基础应用

在Node.js中使用WebSocket构建一个简单的实时聊天服务器,要求实现基本的消息发送与接收功能,并说明如何处理新用户连接和断开连接的情况。
32.3万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试
  1. 安装依赖: 首先确保你已经安装了ws库,它是Node.js中常用的WebSocket库。如果没有安装,可以通过以下命令安装:

    npm install ws
    
  2. 代码实现: 创建一个新的JavaScript文件,例如chatServer.js,内容如下:

    const WebSocket = require('ws');
    
    const wss = new WebSocket.Server({ port: 8080 });
    
    // 存储所有连接的客户端
    const clients = new Set();
    
    wss.on('connection', function connection(ws) {
        // 处理新用户连接
        clients.add(ws);
        console.log('新用户连接');
    
        ws.on('message', function incoming(message) {
            // 处理消息接收
            console.log('收到消息:', message);
            // 广播消息给所有客户端
            clients.forEach((client) => {
                if (client!== ws && client.readyState === WebSocket.OPEN) {
                    client.send(message);
                }
            });
        });
    
        ws.on('close', function close() {
            // 处理用户断开连接
            clients.delete(ws);
            console.log('用户断开连接');
        });
    });
    
  3. 说明

    • 新用户连接:当有新的WebSocket连接时,wss.on('connection',... )回调函数会被触发。在这个回调中,我们将新连接的ws对象添加到clients集合中,并在控制台打印提示信息。
    • 消息发送与接收:当客户端发送消息时,ws.on('message',... )回调函数会被触发。接收到消息后,我们在控制台打印收到的消息,并通过遍历clients集合,将消息广播给除发送者之外的所有处于OPEN状态的客户端。
    • 用户断开连接:当客户端断开连接时,ws.on('close',... )回调函数会被触发。在这个回调中,我们将对应的ws对象从clients集合中删除,并在控制台打印提示信息。

    运行这个服务器后,客户端就可以通过WebSocket连接到ws://localhost:8080进行实时聊天。