WebSocket 客户端
WebSocket 客户端
Fern 从您的 AsyncAPI 通道定义生成类型化的 WebSocket 客户端。生成的客户端处理连接管理、类型化的发送/接收消息和自动重连。
Fern 为 TypeScript、Python、Java、C# 和 Rust 生成 WebSocket 客户端。Go 仅生成类型,Ruby 暂不支持。
启用 WebSocket 客户端生成
在 generators.yml 中为相关生成器添加配置标志:
Java 默认生成 WebSocket 客户端,无需额外配置。
生成的 SDK 行为
给定如下 AsyncAPI 通道定义:
asyncapi.yml
Fern 生成以下客户端代码。
发送方法命名为 send + 规范中的操作名称。sendReading 操作在 TypeScript、Python、Java 和 Rust 中生成 sendSendReading。C# 使用重载的 Send() 方法。
接收处理因语言而异:
- TypeScript — 通用
socket.on("message", handler)回调 - Python — 来自
ws.recv()的类型化响应 - Java — 每种消息类型的处理器如
onPlantStatus(handler) - C# — 类型化的
Event<T>属性如PlantStatus.Subscribe(handler) - Rust — 来自
ws.recv()的类型化枚举
TypeScript
Python
Java
C#
Rust
TypeScript SDK 生成类型化的 socket 类,带有 send 方法、事件处理器和自动重试断开连接的 ReconnectingWebSocket。
身份验证
在 TypeScript、Python、Java 和 Rust 中,WebSocket 客户端自动继承根客户端上配置的身份验证。头部(包括 bearer 令牌、API 密钥和自定义头部)随 WebSocket 握手请求一起发送。
在 C# 中,WebSocket 客户端使用包含连接 URL 和通道参数的 Options 对象构建。通过 HttpInvoker 选项或在底层客户端上设置头部来配置身份验证。
定义 WebSocket 通道
WebSocket 客户端从 AsyncAPI 规范中的通道定义生成。有关定义通道、消息和操作的信息,请参阅发布/订阅操作。