> This page is for SDK, version Legacy.
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 4.0.3

**`(fix):`** 修复 WebSocket `handleIncomingMessage()` 使用 Fern 内部消息 ID
（例如 `AgentV1Welcome`、`ListenV1Results`）而不是规范中的传输判别值
（例如 `Welcome`、`Results`）。这导致所有传入的消息处理器永远不会触发，
全部转到未知类型处理器。

生成器现在从每个消息体的 `type` 属性中提取传输判别值——解析字面量值
（例如 `literal<"Welcome">`）和枚举值（例如 `enum[Flushed, Cleared]`）——
并通过对这些值的 `switch` 语句进行分发。这与 Python 生成器使用的方法一致。

**`(fix):`** WebSocket 处理器注册方法和字段名现在使用传输判别值，而不是 Fern 内部的前缀名称。
例如，`onAgentV1Welcome(handler)` 现在是 `onWelcome(handler)`，
`onAgentV1PromptUpdated(handler)` 现在是 `onPromptUpdated(handler)`。已经由自定义
`x-fern-sdk-method-name` 支持的方法（例如 `onFunctionCallResponse`）保持不变。

**`(chore):`** 改进生成的 WebSocket 客户端代码质量：对静态 URL 路径使用字符串字面量而不是 `StringBuilder`，
删除异步 `sendMessage()` 中的死分支，整合消息分发中的冗余 catch 块，
并修正以元音开头的类型名称的 Javadoc 冠词（"a" vs "an"）。