Skip to content

🚀 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);

📚 文档导航

🔧 技术架构

核心组件

  1. 连接管理器: 负责建立、维护和关闭SSE连接
  2. 消息处理器: 解析和处理接收到的SSE消息
  3. 重试策略: 智能的重连和重试机制
  4. 状态监控: 实时监控连接状态和性能指标
  5. 资源清理: 自动清理资源,防止内存泄漏

设计模式

  • 观察者模式: 通过事件回调处理各种状态变化
  • 策略模式: 可配置的重试策略和错误处理策略
  • 工厂模式: 灵活的客户端实例创建和管理

🚀 性能特性

  • 低延迟: 基于原生EventSource,最小化连接延迟
  • 高吞吐: 优化的消息处理管道,支持高频率数据流
  • 内存优化: 智能的内存管理,避免内存泄漏
  • 网络优化: 自动的网络状态检测和优化

🔒 安全特性

  • HTTPS支持: 强制使用安全连接
  • 请求验证: 内置的请求参数验证
  • 错误隔离: 错误不会影响其他连接
  • 资源限制: 可配置的连接数和请求频率限制

📊 监控和调试

  • 连接状态: 实时监控连接状态
  • 性能指标: 连接时间、消息处理时间等
  • 错误日志: 详细的错误信息和堆栈跟踪
  • 调试模式: 开发环境下的详细日志输出

🤝 社区支持

如果您在使用过程中遇到问题,可以通过以下方式获取帮助:

  • 📖 文档: 仔细阅读相关文档
  • 🔍 搜索: 使用页面右上角的搜索功能
  • 💬 GitHub Issues: 提交问题
  • 📧 邮件支持: 发送邮件到项目维护者

📈 更新日志

查看最新的功能更新和bug修复:更新日志


开始使用查看详细文档

Released under the ISC License.