Protocol Versioning

Protocol Versioning 是管理 SSE 事件协议版本的机制,确保新旧客户端在协议变更时能平滑升级。

#type / concept #status / evergreen #tech / ai #tech / architecture

[!info] related notes

Protocol Versioning

一句话定义

Protocol Versioning 是管理 SSE 事件协议版本的机制。新增事件类型、修改事件字段时,需要版本化确保新旧客户端兼容。

核心原理

版本化方式

方式实现适用场景
Envelope 版本meta.version: "2"小版本变更
URL 版本/api/v2/chat/stream大版本变更
协商连接时协商版本复杂场景

向后兼容

function handleEvent(event: EventEnvelope) {
  const version = event.meta?.version || "1";

  switch (version) {
    case "2":
      return handleV2(event);
    case "1":
    default:
      return handleV1(event);
  }
}

新增事件类型

// 新增事件类型时,旧客户端应该忽略未知类型
function handleEvent(event: EventEnvelope) {
  const handler = handlers[event.event];
  if (handler) {
    handler(event.data);
  } else {
    // 未知事件类型,忽略
    console.debug(`Unknown event type: ${event.event}`);
  }
}

常见坑

  1. 不做版本化: 协议变更时旧客户端崩溃
  2. 不向后兼容: 新版本发布后旧客户端无法使用
  3. 版本太多: 维护成本高

参考资料

创建于 2026/6/30 更新于 2026/7/15