WebSocket 与实时通信

共 62 题
#

1. WebSocket 二进制帧 vs 文本帧在协议设计的工程取舍

A 二进制帧必须搭配 JSON
B 二进制帧只能传 8 字节
C 文本帧无法传输中文
D 文本帧便于调试但有大对象序列化开销,二进制帧适合高频协议化数据,可混用分流 ✓ 正确答案
#

2. Nginx 配置与大规模 WebSocket 连接管理

A 透传 Upgrade/Connection 头(HTTP/1.1)、关闭缓冲并调大超时,配合会话粘性或后端无状态化 ✓ 正确答案
B proxy_http_version 1.0
C 禁用 keepalive
D 必须使用 HTTP/2
#

3. WebSocket 在浏览器与 Node.js(ws 库)的客户端与服务端的工程实践

A 心跳保活(ping/pong)、载荷上限限制与异常连接回收 ✓ 正确答案
B 消息的 UTF-8 解码
C 浏览器的自动重连
D 跨域预检请求
#

4. SSE 与 WebSocket 在服务端推送与全双工的工程取舍

A SSE 支持双向通信
B SSE 必须配合轮询使用
C WebSocket 无法做服务端推送
D 只需服务端推送时 SSE 更简单(自动重连、过代理友好),需要全双工低延迟时选 WebSocket ✓ 正确答案
#

5. EventSource(SSE)的自动重连与 Last-Event-ID 协议在消息流的工程价值

A 加密消息内容
B 重连后服务端据最后事件 id 断点续推,配合序号持久化与去重实现不丢消息 ✓ 正确答案
C 限制消息大小
D 替代心跳机制
#

6. SSE 在 Cloudflare/CDN 反向代理的 Buffering 与 X-Accel-Buffering 头

A 增大缓冲字节数
B 返回 X-Accel-Buffering: no 并设置 text/event-stream 与 no-cache,配合心跳保活 ✓ 正确答案
C 改用 HTTP/3
D 让代理缓存整个响应
#

7. fetch 的 ReadableStream 与 SSE 的协作在 AI 流式响应的应用

A 自动重连更可靠
B 支持自定义请求头、POST 与 AbortController 取消,配合背压控制消费 ✓ 正确答案
C 不需要解析协议
D 数据自动压缩
#

8. SSE 的连接生命周期、心跳与代理缓冲

A 以注释/空事件定期推送防止代理与负载均衡空闲超时回收连接,并配合关闭缓冲 ✓ 正确答案
B 加密传输
C 加快事件传输
D 替代 Last-Event-ID
#

9. SSE 在浏览器 DevTools 的 EventStream 流式调试

A EventStream 视图事件持续小批量到达
B 事件一次性全部到达且 TTFB 后有长时间无字节,说明流被攒批缓冲 ✓ 正确答案
C 响应头缺少 Connection 头
D 事件无法显示
#

10. 长轮询相比 SSE/WebSocket 在现代应用的取舍,什么场景仍适合长轮询?

A 高频实时协作编辑
B 大规模聊天室
C 客户端环境不允许长连接或服务端无法维持长连接的低频简单推送 ✓ 正确答案
D 在线游戏同步
#

11. navigator.sendBeacon 在页面卸载时日志/埋点上报的工程取舍

A 保证请求一定送达并支持响应处理
B 替代所有 fetch 请求
C 页面卸载时尽力发送的免阻塞上报,适合埋点,但无确认且载荷受限,关键数据需业务侧保障 ✓ 正确答案
D 只能在 Worker 中使用
#

12. WebSocket(new WebSocket(url, protocols))

A 指定加密算法
B 限制消息大小
C 设置心跳间隔
D 声明客户端子协议供服务端协商选择,结果经 protocol 属性读取,实现同端点协议复用 ✓ 正确答案
#

13. WebSocket 的认证(JWT in Sec-WebSocket-Protocol / Cookie / 子协议)

A token 不会出现在任何日志中
B 支持任意大小的 token
C 不依赖 Cookie,可在跨域握手时携带凭证,由服务端校验后协商确认 ✓ 正确答案
D 免去 Origin 校验
#

14. 消息可靠性(ACK、序列号、去重、消息补偿、离线消息拉取)

A 依赖 TCP 保证业务顺序
B 每条消息都重发三次
C ACK + 序列号 + 幂等去重 + 断线补偿,配合离线消息拉取与水位持久化 ✓ 正确答案
D 只用心跳保活
#

15. WebSocket 重连机制(指数退避、心跳保活 Ping/Pong、状态机)

A 固定 1 秒重试
B 状态机 + 指数退避带抖动 + 心跳判死,重连后重新认证与恢复订阅 ✓ 正确答案
C 断开后永不重连
D 只靠浏览器自动重连
#

16. WebSocket 实战握手流程、代理(nginx/Envoy)

A 200 OK
B 302 Redirect
C 204 No Content
D 101 Switching Protocols,服务端返回基于 Sec-WebSocket-Key 计算的 Accept 值 ✓ 正确答案
#

17. WebSocket 的流量控制与背压(backpressure)

A 监控 bufferedAmount/缓冲水位,超阈值暂停生产或降采样,配合分片确认窗口限速 ✓ 正确答案
B 无限增大发送缓冲
C 依赖 TCP 自动处理
D 关闭心跳
#

18. 消息顺序保证(全局有序、分区有序)

A 按房间/会话分区维护单调序号,分区内有序、分区间并行,断线按分区水位补拉 ✓ 正确答案
B 强制全局有序以支持所有场景
C 用客户端时间戳排序
D 随机顺序发送
#

19. WebSocketStream API(实验性)在背压与流式消费的工程价值

A 提升 WebSocket 传输速度
B 以 Web Streams 表达读写,天然获得背压与流式组合能力,但仍是实验性 API ✓ 正确答案
C 替代所有消息格式
D 支持 HTTP/2 推送
#

20. WebSocket 的 Sec-WebSocket-Protocol 子协议在多业务复用的工程应用

A 加密消息内容
B 限制连接数量
C 替代 TLS
D 握手期协商协议版本/业务格式/能力,服务端白名单校验后回选,实现同端点多业务复用 ✓ 正确答案
#

21. WebSocket 的负载均衡(粘性会话 vs 一致性哈希)

A 只依赖 IP hash
B 会话状态外置 + 注册表定位 + 消息总线转发,实现无状态节点与弹性伸缩 ✓ 正确答案
C 每用户固定一台物理机
D 禁用负载均衡
#

22. Socket.IO 的自动重连(reconnection)与降级轮询的工程价值

A 自动重连与长轮询降级、事件/房间语义开箱即用,适合业务型实时应用 ✓ 正确答案
B 传输速度更快
C 无任何协议开销
D 只能在服务端使用
#

23. WebSocket 在大文件上传(分片)的工程应用与边界

A 一次性发送整个文件
B 依赖 TCP 自动限速
C 禁止二进制消息
D 分片 + ACK 滑动窗口 + 已收片位图断点续传,适合会话内上传,通用上传仍以 HTTP 分片更成熟 ✓ 正确答案
#

24. WebSocket 的消息压缩(permessage-deflate)的浏览器兼容性边界

A 经 Sec-WebSocket-Extensions 协商启用,Safari 等实现缺失,需以协商结果为准并做容量评估 ✓ 正确答案
B 所有浏览器默认支持且行为一致
C 与消息内容无关
D 压缩后消息不可读
#

25. WebSocket 的 CloseEvent 在优雅关闭(1000 Normal Closure)的工程应用

A 应用自定义关闭原因(如 token 过期、被顶号),客户端据此决定重连策略 ✓ 正确答案
B 保留给协议规范
C 表示传输错误
D 替代 1000 使用
#

26. WebSocket 的错误码(1006 Abnormal Closure)

A 连接异常断开(无关闭握手),应触发重连逻辑并与正常关闭分开统计 ✓ 正确答案
B 服务端主动正常关闭
C token 过期
D 可以回发 1006 关闭帧
#

27. WebSocket 在 SSR(Next.js API Route、Nuxt 3 Nitro)

A 在 API Route 中直接创建 WebSocketServer
B 独立实时服务(网关/托管平台)承载连接,SSR 只负责渲染并注入连接凭证 ✓ 正确答案
C serverless 函数天然支持长连接
D 用静态导出实现推送
#

28. WebSocket 在移动端(4G/5G 切换)的连接稳定性工程取舍

A 延长心跳到 5 分钟节省电量
B 短心跳快速判死 + 网络事件主动重连 + 快速会话恢复,弱网时降采样或降级 ✓ 正确答案
C 关闭所有重连
D 依赖 TCP 超时检测
#

29. WebSocket 在企业代理(SSL Inspection)

A 服务端不支持 TLS
B 域名不含 https
C 浏览器版本过低
D 代理改写/剥离升级头或回收空闲长连接,需放行配置、短心跳与降级方案配合 ✓ 正确答案
#

30. WebSocket 的消息大小限制(frame size)在大型数据传输的工程应用

A 大消息分帧 + ACK 窗口,服务端配置 maxPayload 防护,大文件用资源引用分离传输 ✓ 正确答案
B 单帧发送任意大小消息
C 无限调大服务端限制
D 用文本帧传二进制
#

31. WebSocket 在浏览器扩展(MV3)中的 service worker 通信边界

A 放在 service worker 中并阻止其休眠
B 扩展无法使用 WebSocket
C service worker 支持常驻
D 放在 offscreen document 或扩展页面中,状态持久化,service worker 事件驱动处理 ✓ 正确答案
#

32. RFC 8441 在 HTTP/2 上引导 WebSocket(扩展 CONNECT、:protocol 伪头部)的机制与浏览器/服务端支持现状

A 沿用 HTTP/1.1 的 Upgrade 头
B 无需握手直接传输
C 用 DNS 记录标识
D HTTP/2 流上的 CONNECT + :protocol: websocket 伪头,浏览器默认支持有限,多路复用收益需 WebTransport 等方案获取 ✓ 正确答案
#

33. WebSocket 与 HTTP/3 的关系,为何 WebSocket 仍运行在 TCP 上,WebSocket over QUIC 的进展与意义

A WebSocket 已全面迁移到 QUIC
B HTTP/3 完全取代 WebSocket
C WebSocket 语义绑定 TCP 单流模型,QUIC 收益由 WebTransport 承接,RFC 9220 的 H3 WebSocket 浏览器支持有限 ✓ 正确答案
D WebTransport 与 QUIC 无关
#

34. NDJSON(Newline Delimited JSON)

A 每行独立可流式解析、单行损坏可跳过、支持断点续传,无需整体序列化 ✓ 正确答案
B 数据更紧凑
C 自带自动重连
D 不需要转义
#

35. SSE 的自动重连(EventSource 内部机制)与心跳保活在代理服务器超时场景的边界

A 调大浏览器重连间隔
B 心跳间隔小于代理超时并确保不被缓冲,配合 retry 抖动与 Last-Event-ID 业务续传 ✓ 正确答案
C 禁用自动重连
D 增大事件载荷
#

36. EventSource 的 event: 自定义事件类型与 data: 多行拼接规范在工程实践的边界

A 各行按换行符拼接为一个 data 值,空行分隔事件,自定义类型需 addEventListener 监听 ✓ 正确答案
B 只取第一行
C 多行会抛解析错误
D data 与 event 字段互斥
#

37. SSE 在 nginx 反向代理(proxy_buffering off; proxy_cache off;)的配置工程实践

A proxy_buffering on 提高吞吐
B proxy_buffering off + proxy_cache off + 调大超时并配合 no-cache 头 ✓ 正确答案
C 开启 gzip 缓冲压缩
D 使用 HTTP/2 升级
#

38. Fetch Streams(response.body ReadableStream)与 EventSourcePolyfill 在 Node.js 与浏览器的协作

A 在 Node 端与受限浏览器场景用 fetch 流实现 SSE 消费,与浏览器 EventSource 统一抽象 ✓ 正确答案
B 提升 SSE 传输速度
C 替代 WebSocket
D 自动压缩事件
#

39. AWS Lambda 与 Cloudflare Workers 的 SSE 响应支持(无需长连接)

A 平台为每个 SSE 连接分配常驻进程
B 平台支持无限执行时间
C SSE 不需要网络
D SSE 只是流式响应,平台无需维护长连接状态,函数/Worker 边生成边返回即可 ✓ 正确答案
#

40. React 19 的 use() Hook 与 AI 流式响应(Vercel AI SDK、LangChain.js)的 SSE 协议协作

A use() 可以解析 ReadableStream 并逐 token 重渲染
B use() 消费 Promise 类数据(适合 RSC),客户端逐 token 渲染由 AI SDK 的状态 + 流式协议(SSE)协作完成 ✓ 正确答案
C use() 替代了 useEffect
D use() 与流式无关
#

41. SSE 的 retry: 字段在客户端断线重连间隔与服务器端 last-event-id 配合的现代工程价值

A 限制事件大小
B 加密传输
C 由服务端控制客户端重连间隔,配合 Last-Event-ID 断点续传,缓解重连风暴并保证不丢消息 ✓ 正确答案
D 替代心跳
#

42. WebTransport 在游戏 / 实时音视频的工程取舍

A 数据报提供低延迟可丢弃通道、流提供可靠有序通道,多流优先级适应混合流量 ✓ 正确答案
B 完全替代 WebRTC 媒体传输
C 与 WebSocket 完全等价
D 只能传输文本
#

43. WebTransport(HTTP/3 + QUIC)双向流与 Datagram 的工程价值

A 必须保证送达的金融交易
B 大文件断点续传
C 可容忍丢包的低延迟高频数据(游戏状态同步、遥测) ✓ 正确答案
D 数据库事务
#

44. WebTransport 与 WebSocket 的能力对比与场景

A 兼容性更好
B 基于 QUIC 提供多流复用、按通道可靠性选择与连接迁移 ✓ 正确答案
C 代理支持更成熟
D 延迟必然更低
#

45. WebTransport HTTP/3 + 0-RTT 连接恢复在弱网的工程价值

A 持票握手时首包即带数据、切网经连接 ID 迁移免重握,但存在重放风险且支持面有限 ✓ 正确答案
B 完全免去重连逻辑
C 与 TCP 重连一致
D 不需要会话管理
#

46. WebTransport 在 P2P 与媒体流(datagram.duplex)

A WebTransport 是浏览器间直连的 P2P 协议
B datagram 自动保证顺序
C WebTransport 只能传输文件
D WebTransport 是客户端-服务器模型,常用于 P2P 系统的中继/信令,datagram 适合可丢包的实时媒体 ✓ 正确答案
#

47. WebTransport 在浏览器支持现状与降级方案

A 抽象传输层 + 连接级能力验证 + WebSocket/HTTP 流降级实现与语义降级 ✓ 正确答案
B 仅检测 window.WebTransport 存在即可
C 不支持就报错
D 强制用户升级浏览器
#

48. WebTransport 的连接迁移(Connection Migration)

A 迁移后必须重新握手
B 只支持桌面端
C 迁移依赖 DNS 更新
D 以连接 ID 而非 IP 标识连接,路径变化后续传同一会话,移动弱网不中断 ✓ 正确答案
#

49. Socket.IO 的自动重连、房间机制、命名空间、适配器

A 每节点独立广播无需同步
B 广播只能单机
C 经 Redis 等适配器发布订阅房间事件,各节点推送给本节点房间成员 ✓ 正确答案
D 房间状态存客户端
#

50. Pusher / Ably / Centrifugal 在托管实时消息平台的工程取舍

A 数据完全本地化
B 免费无限额度
C 免运维、快速上线与全球网络能力,但需评估按量计费成本与数据主权约束 ✓ 正确答案
D 可完全自定义协议
#

51. QUIC 的 0-RTT 风险 在大型应用的网络性能工程价值

A 所有请求一律使用 0-RTT
B 幂等/只读请求放行 0-RTT 换取 RTT 节省,写操作回退 1-RTT 并做服务端重放检测 ✓ 正确答案
C 0-RTT 无任何风险
D 0-RTT 只用于 UDP
#

52. WebTransport 的多路复用(Streams Multiplexing)

A 提高单条流的吞吐上限
B 替代 WebSocket 的全部场景
C 一条连接承载多条独立流,互不阻塞且独立控制可靠性/优先级/生命周期 ✓ 正确答案
D 消除所有网络延迟
#

53. WebTransport 在服务端(Node.js node:webtransport)的现代工程实践

A 用 node:webtransport 监听 UDP 并配置 TLS 证书,按会话处理流与数据报 ✓ 正确答案
B 复用 HTTP/2 端口即可
C 无需证书
D 只支持文本流
#

54. WebTransport 的 HTTP/3 头部压缩(QPACK)

A QPACK 不压缩头部
B HPACK 支持连接迁移
C QPACK 用于 WebSocket
D HTTP/3 多流乱序使 QPACK 经专用编解码器流同步动态表更新 ✓ 正确答案
#

55. WebTransport 在 NAT 穿透的工程实践

A WebTransport 支持浏览器间 UDP 打洞直连
B 需要 STUN 才能连接服务器
C NAT 环境下 WebTransport 完全不可用
D WebTransport 是客户端-服务器 QUIC 会话,P2P 场景经服务器中继或与 WebRTC ICE 配合,并注意 UDP 映射保活 ✓ 正确答案
#

56. WebTransport 的 Streams API 集成在背压(backpressure)

A 发送端无限写入
B 背压由浏览器自动处理无需编码
C 数据报也有背压
D writable 写入 Promise 随流控回落、readable 消费驱动 QUIC 窗口收缩,管道传播背压 ✓ 正确答案
#

57. WebTransport 的 close() 与 datagramsWritable 在优雅关闭的工程应用

A 直接断开 TCP
B closeCode 无业务含义
C 关闭后立即复用会话
D 以 closeCode/reason 通知对端,冲刷最后一帧并等待进行中流完成,超时强制关闭 ✓ 正确答案
#

58. WebTransport 的 stats 在网络质量监控的工程价值

A 加密网络数据
B 替代应用层日志
C 采集 RTT/丢包/速率等指标,驱动客户端自适应与质量监控上报 ✓ 正确答案
D 只统计数据报
#

59. WebTransport 在 CDN 边缘(Cloudflare、Vercel)

A 所有平台函数原生支持
B WebTransport 无法在边缘运行
C Cloudflare 等原生终止 QUIC 并可在 Workers 处理会话,其他平台经网关转源站,注意 UDP 放行与粘性 ✓ 正确答案
D 必须回源到物理机
#

60. WebTransport 在多路复用时的队头阻塞(head-of-line blocking)

A 与 HTTP/2 一样存在全局队头阻塞
B 完全无延迟
C 流间无队头阻塞,单流内仍按序,残余面在流内阻塞与带宽争用 ✓ 正确答案
D 丢包不影响任何流
#

61. MQTT 在 IoT 与移动端的低功耗实时通信

A 会话保持 + QoS 分级 + 心跳与 LWT 配合,后台受限时由系统推送兜底 ✓ 正确答案
B 频繁断开重连省电
C 不使用 TLS
D 取消心跳
#

62. MQTT.js / HiveMQ Cloud 在 IoT 浏览器客户端的工程价值

A 经 WebSocket 桥接(MQTT over WS),配合托管 Broker 与主题 ACL 实现设备-Web 实时联动 ✓ 正确答案
B 浏览器原生 TCP 直连
C 只能轮询
D 需要插件