🚀 SSE 流式管理器
高效的Server-Sent Events流式请求管理工具,让实时数据流处理变得简单
📖 概述
StreamFetchClient
是一个基于 Server-Sent Events (SSE) 的流式请求客户端,专为处理实时流式数据而设计。它基于 @microsoft/fetch-event-source
库构建,提供了完整的流式请求管理、自动重试、错误处理等功能。
✨ 核心特性
- 🔄 流式数据处理: 支持 Server-Sent Events (SSE) 实时数据流
- 🚀 自动重试机制: 智能重试策略,支持指数退避算法
- ⏱️ 超时控制: 可配置的连接超时和请求超时
- 🎯 状态管理: 完整的请求生命周期状态跟踪
- 🛡️ 错误处理: 统一的错误封装和异常处理
- 🔧 高度可配置: 支持自定义消息解析器、重试策略等
- 📱 页面可见性感知: 支持页面隐藏时的连接管理
- 🧠 智能连接管理: 自动处理连接、重连、断开等状态
- 💾 内存泄漏防护: 自动清理资源,防止内存泄漏
🎯 适用场景
- AI聊天应用: ChatGPT、Claude等AI助手的流式对话
- 实时数据监控: 股票价格、传感器数据、系统状态等
- 社交媒体: 实时动态更新、消息推送等
- 在线协作: 文档协作、代码编辑等实时同步
- 游戏应用: 实时游戏状态、多人游戏同步等
🚀 快速开始
具体使用请看使用文档
typescript
import StreamFetchClient from "./stream-client";
const client = new StreamFetchClient({
baseUrl: "https://api.example.com/stream",
timeout: 30000,
retry: {
maxRetries: 3,
retryDelay: 1000,
},
});
const handlers = {
onMessage: (data, event) => {
console.log("收到消息:", data);
},
onComplete: () => {
console.log("请求完成");
},
onError: (error, retryCount) => {
console.error("发生错误:", error.message, "重试次数:", retryCount);
},
};
await client.sendRequest({ prompt: "你好" }, handlers);
📚 文档导航
🔧 技术架构
核心组件
- 连接管理器: 负责建立、维护和关闭SSE连接
- 消息处理器: 解析和处理接收到的SSE消息
- 重试策略: 智能的重连和重试机制
- 状态监控: 实时监控连接状态和性能指标
- 资源清理: 自动清理资源,防止内存泄漏
设计模式
- 观察者模式: 通过事件回调处理各种状态变化
- 策略模式: 可配置的重试策略和错误处理策略
- 工厂模式: 灵活的客户端实例创建和管理
🚀 性能特性
- 低延迟: 基于原生EventSource,最小化连接延迟
- 高吞吐: 优化的消息处理管道,支持高频率数据流
- 内存优化: 智能的内存管理,避免内存泄漏
- 网络优化: 自动的网络状态检测和优化
🔒 安全特性
- HTTPS支持: 强制使用安全连接
- 请求验证: 内置的请求参数验证
- 错误隔离: 错误不会影响其他连接
- 资源限制: 可配置的连接数和请求频率限制
📊 监控和调试
- 连接状态: 实时监控连接状态
- 性能指标: 连接时间、消息处理时间等
- 错误日志: 详细的错误信息和堆栈跟踪
- 调试模式: 开发环境下的详细日志输出
🤝 社区支持
如果您在使用过程中遇到问题,可以通过以下方式获取帮助:
- 📖 文档: 仔细阅读相关文档
- 🔍 搜索: 使用页面右上角的搜索功能
- 💬 GitHub Issues: 提交问题
- 📧 邮件支持: 发送邮件到项目维护者
📈 更新日志
查看最新的功能更新和bug修复:更新日志
开始使用 → 查看详细文档