WebSocket 与 SSE
连接 WebSocket 服务器,发送已存储的消息和一次性消息,并实时跟踪服务器发送事件流。
WebSocket 请求会打开一个持续保持的连接:你发送消息,并在服务器的消息到达时立即看到。服务器发送事件(SSE)是响应持续流式传输的普通 HTTP 请求;Echolot 会在每个事件到达时显示它。
WebSocket 请求

连接
- 选取 文件 › 新建 WebSocket 请求,或在边栏中 请求 旁边的 + 菜单里选取 新建 WebSocket 请求。
- 输入地址,以
ws://或wss://开头。Alpenglow 的 Realtime › Order updates 使用{{wsURL}}/orders,即wss://demo.echolot.dev/v1/orders。 - 选取 连接(⌘R)。
连接打开期间,按钮显示 断开连接(再按一次 ⌘R)。当启用了受保护的环境时,它显示 连接到 Production…(带该环境的名称),并会先询问。见受保护的环境。
编辑器有这些标签页:文档、消息、标头、参数、认证、变量、测试、脚本 和 设置。标头、查询参数和认证随开场握手(HTTP 升级)一起发送, 所以需要在标头或地址中带令牌的服务器会在那里拿到它。TLS 验证、代理和证书等设置的适用方式与 HTTP 请求相同。
子协议
在 消息 标签页顶部,子协议 列出要向服务器提供的协议,用逗号分隔,例如 graphql-ws, chat.v2。留空表示不提供。
发送消息
在 消息 标签页底部,输入消息并选取 发送(⇧⌘↩)。其中可以使用 {{variables}}。在连接打开之前,字段显示 连接后即可发送消息。
经常发送的消息可以与请求一起存储。点按字段旁边的 + 即可存储你输入的内容。每条已存储的消息都有名称、文本和它自己的 发送 按钮。Order updates 有两条:
{"op":"subscribe","channel":"orders"}{"op":"ping"}已存储消息开头的复选框 在运行中发送,决定请求在无人操作的情况下运行时是否发送它:在运行器中、通过命令行,或为智能体运行时。 这些情况会在连接之后按顺序发送已启用的消息,然后监听 10 秒并关闭。
消息日志
响应窗格的 消息 标签页实时显示会话:双向的每条消息,最新的在最后,附有时间和大小,以及连接打开和关闭的时刻。
- 全部、已发送 和 已接收 按方向过滤。
- 过滤消息 按文本查找消息。
- 更多 以美化格式显示 JSON 消息;收起 再次将其折叠。
- 拷贝按钮拷贝一条消息。
Echolot 会自己应答服务器的 ping。由分片拼接而成的消息最大可达 64 MB;更大的消息会以代码 1009 关闭连接。
连接关闭时,会话保存在历史记录中:握手作为请求,消息日志作为响应正文。
服务器发送事件
服务器发送事件流是类型为 text/event-stream、持续发送事件的 HTTP 响应。为它使用普通的 HTTP 请求即可:除了地址,无需任何设置。

- 在 Alpenglow 工作区中打开 Realtime › Order events。它发送
GET {{baseURL}}/orders/events,带Accept: text/event-stream。 - 选取 发送。
- 在响应窗格中选取 事件 标签页。
事件 标签页按顺序列出每个事件,带编号,附有事件名称和它的 ID(id:),数据是 JSON 时则以 JSON 显示。事件流运行期间,它会跟随新事件并为其计数。
正文 标签页按服务器写出的样子显示事件流,随着数据到达不断增长。
事件流会一直运行,直到服务器结束它或你选取 取消(⌘.);已到达的内容会保留。事件流开始之后,请求的总超时不再对它适用。 在运行中、通过命令行以及为智能体运行时,事件流会在 10 秒后结束。
要从事件流停下的地方继续,请在 Last-Event-ID 标头中把最后一个事件的 ID 发回去。演示 API 的事件流发送 20 个事件,相邻两个事件相隔一秒,随后发送 end,并支持 Last-Event-ID。
通过 HTTP 的 GraphQL 订阅同样使用服务器发送事件:见 GraphQL。
通过命令行
echolot send 可以在终端中打开 WebSocket 和 Socket.IO 会话,并跟踪事件流。见 echolot send 和实时教程。

