用途:在 Relic 中实现实时通信、WebSocket 端点、Server-Sent Events(SSE)以及自定义协议。Relic 处理器返回 Result,可为 Response、WebSocketUpgrade 或 Hijack,WebSocket 与劫持均为内置能力,无需额外安装包。\n\n主要能力:\n1. WebSocket:在路由中返回 WebSocketUpgrade((webSocket) async { ... }) 将 HTTP 连接升级为 WebSocket。可通过 webSocket.events 异步监听事件并做模式匹配,事件类型包括 TextDataReceived(text: final message)(收到文本帧)与 CloseReceived()(客户端关闭连接)。发送数据用 sendText(失败时抛异常)或 trySendText(失败时静默)。\n2. 连接劫持:返回 Hijack((channel) async { ... }) 直接控制底层 TCP 连接。例如 SSE 中向 channel.sink 写入 utf8.encode('data: ...\n\n') 并用 Timer.periodic 定时推送,等待 channel.sink.done 后取消定时器。自定义协议可直接写入原始 HTTP 响应字符串并关闭 channel.sink。\n\n使用方式:在 RelicApp 上注册路由(如 ..get('/ws', ...)、..get('/sse', ...)),处理器返回 WebSocketUpgrade 或 Hijack,最后 await app.serve() 启动服务。也可用独立函数返回 WebSocketUpgrade,并用 ws.events.listen 做简单监听。\n\n适用场景:需实时双向通信、服务端推送、自有二进制或文本协议的 HTTP 服务。\n\n限制:资料未提供鉴权、背压控制、心跳、超时、并发上限及错误处理等细节;Hijack 后需自行管理响应头与连接关闭。
relic-websockets
智能体与模型
更新于 10-16 05:54