前端/移动开发面试题更新 2026-08-05

请说明在 Node.js 环境下,通过 WebSocket 实现实时通信的具体做法,包括必要的库或模块、服务端与客户端的连接建立流程,以及消息推送和接收的关键步骤。

前端/移动开发风险判断技术原理技术选型Node.jsWebSocket

考察说明

考查对 Node.js 中 WebSocket 实时通信机制和实现流程的理解。

回答思路

  1. 【回答框架 1】WebSocket 是一种基于 TCP 的全双工通信协议,通过一次 HTTP 握手建立长连接,实现服务端与客户端双向实时数据传输。Node.js 中常用库为 ws,它提供 WebSocketServer 处理客户端连接,并通过事件监听实现消息交互。
  2. 【回答框架 2】服务端使用 new WebSocketServer({ port }) 创建服务,监听 connection 事件获取客户端连接对象。客户端使用 WebSocket 构造器连接 ws:// 地址,onopen 表示连接成功,onmessage 接收服务端消息。
  3. 【回答框架 3】服务端通过 client.send() 向单个客户端发送消息,若需广播可使用遍历 clients 集合的方式。同时监听 message 事件接收客户端消息,并进行业务处理后回传。连接关闭时触发 close 事件,需准确清理资源。
  4. 【回答框架 4】实现实时通信的关键是处理心跳检测,通过定时发送 ping 检测连接存活,防止半开连接占用资源。数据格式可采用 JSON 进行序列化,便于结构化通信。此外需考虑并发连接数、消息量较大的场景,合理设置 backpressure 和连接上限。
  5. 【回答框架 5】相比轮询和长轮询,WebSocket 显著降低延迟和服务器资源消耗,但需处理断线重连、消息丢失等问题,可在应用层实现重连机制和消息确认。
  6. 【关键点 1】WebSocket 通过 HTTP 升级握手建立全双工长连接
  7. 【关键点 2】ws 库提供 WebSocketServer 和 WebSocket 类实现服务端和客户端
  8. 【关键点 3】服务端使用 connection 事件获取连接,message 事件接收消息,send 方法推送消息
  9. 【关键点 4】需实现心跳机制和断线重连保证连接可靠性和实时性
  10. 【关键点 5】广播推送需遍历所有客户端连接
  11. 【易错点 1】不处理连接异常和心跳可能导致连接假死,无法及时清理无效连接
  12. 【易错点 2】广播时直接遍历 clients 可能阻塞事件循环,需分批或使用异步方式
  13. 【易错点 3】不使用子协议或路径区分业务,可能造成消息路由混乱