Sunday面试指南

WebRTC 和 WebSocket 有什么区别?实时音视频为什么需要 STUN 和 TURN?

下面是一段教学模拟,不是真实面试记录。

🧑‍💻 面试官:做视频通话,可以直接用 WebSocket 传视频吗?

🙋‍♂️ 我:WebSocket 能实时传消息,应该可以。

🧑‍💻 面试官:技术上能传数据,和已经具备实时媒体处理机制,是一回事吗?

🙋‍♂️ 我:还要考虑编码、延迟和网络适应。

🧑‍💻 面试官:用了 WebRTC,双方就一定能直连吗?STUN 和 TURN 分别负责什么?

把三件事分开:「交换连接信息」「找到可用路径」「传输实时内容」。信令、地址发现和中继,不是一个功能。

面试速答(60 秒版)

WebSocket 提供持续的双向消息通道,适合聊天、状态和信令等通信。WebRTC 则提供实时音视频及 DataChannel,包含更完整的媒体与连接协商机制。

WebRTC 本身不规定应用怎样交换信令,可以通过 WebSocket 或其他方式交换会话与候选信息。

建立连接时,ICE 尝试可用候选路径。STUN 帮助发现公网映射地址,但不负责转发媒体,也不保证能穿透所有网络;TURN 则提供中继路径,直接连接不可用或策略要求中继时,可以通过它传输。

因此 WebRTC 不等于永远浏览器直连。多人会议还可能使用 SFU 等服务端架构,需要结合连通率、延迟、带宽和成本选择。

WebRTC:信令、发现、中继:知道地址不等于能够直连

知识点详解:两个人知道对方是谁,还需要知道怎样连上

WebSocket 能传字节,但媒体问题不止传字节

假设我们已有 WebSocket 服务,浏览器把数据发给服务端,服务端再发给另一个浏览器。

它可以承担消息通道,但如果用来传实时音视频,我们仍需要自己考虑编码、播放节奏、丢包与延迟处理,以及拥塞下怎样保持体验。

WebRTC 提供为实时媒体设计的能力;其 DataChannel 还可以传其他数据,并能配置不同交付特性。不能把所有 WebRTC 通信都说成“永远不可靠、永远无序”。

选择不是根据名字中有没有“实时”,而是根据需要的媒体与连接能力。

信令把协商信息送过去,不负责所有媒体传输

双方需要交换会话描述与 ICE 候选等信息。应用通常需要一个信令服务,把这些信息送到对方。

WebSocket 可以承担这个角色,也可以用其他通信方式。WebRTC 不替我们规定房间管理、用户登录或完整信令协议。官方建立连接说明

信令经过服务器,不代表建立后的所有媒体也走同一个 WebSocket。它们是两条职责不同的路径。

STUN 查地址,TURN 提供中继

浏览器通常在 NAT 或防火墙之后。自己的局域网地址,不一定能被另一方直接访问。

STUN 帮助确定外部观察到的映射地址,产生相关候选。ICE 再通过连通检查确定哪条路径可用。获得一个公网映射,不代表对方必然能接通。

TURN 则分配中继资源。当需要中继时,双方通过这条路径传数据。它要承担流量,因此有带宽与运行成本,不是一个只返回地址的轻量查询服务。协议说明

ICE 会综合候选和策略选择路径,不应该把所有实现简化成“STUN 失败后才临时考虑 TURN”。例如应用可以明确要求只用中继。

STUN 与 TURN 不做同一件事:发现地址,不等于中继

多人会议还会改变拓扑

两人通话可以评估直连;多人都互相传多路媒体,连接数量与上行负担会迅速增加。

SFU 等架构让客户端将媒体发送给服务端,再由服务端选择并转发给参与者。这仍然可以使用 WebRTC,不与浏览器协议冲突。

因此,方案里要画清信令路径、媒体路径和中继或转发节点。没有这张关系图,“我们使用 WebRTC”还不足以解释实际成本和故障点。

信令和媒体路径要分开:协议名称不能代替系统拓扑

图中只示意了部分会话信息连接,绿色虚线表示需要时可用的 TURN 中继路径。实际项目仍要补齐各参与者的信令连接,不能把这张示意图直接当成完整部署图。

面试官继续追问

有 STUN,就不用部署 TURN 吗?

不能保证。需要根据网络覆盖和连通目标评估中继。只在自己家 Wi-Fi 测通,不代表移动网络和企业防火墙环境都能使用。

TURN 和 SFU 是同一个东西吗?

不是。TURN 提供连接层面的中继路径;SFU 面向会议媒体选择和转发。它们可能出现在同一系统,但职责不同。

WebSocket 断了,媒体一定立即断吗?

不一定,已经建立的媒体连接与信令连接不是同一条通道。但新协商、房间管理与恢复可能受影响,应按系统机制判断。

面试速记卡

  • WebSocket:持续双向消息通道,可以承担信令。
  • WebRTC:实时媒体与 DataChannel,另有连接协商机制。
  • ICE:收集并检查候选,选择可用连接路径。
  • STUN:帮助发现映射地址,不负责媒体中继。
  • TURN:提供中继;多人会议还可能使用 SFU。

公司面试真题

这道题暂未收录可核验的公司真题来源。你可以先阅读本文解析,或浏览已收录的公司面试真题。

浏览公司面试真题 →
简历汪永久免费在线制作简历,模板直接套用、导出无水印,永久免费、下载免费,不需要付费解锁任何功能。去写简历