Skip to content

useStreamData

useStreamData 是一个用于处理 Server-Sent Events (SSE) 流数据的 Vue Composable。

特性

  • 支持 SSE 数据流的接收和处理
  • 完整的状态管理和错误处理
  • 可自定义数据格式化
  • 支持流的启动、停止和重置
  • 提供完整的生命周期钩子

用法

显示代码
typescript
import { useStreamData } from 'pro-el-components'

const { status, content, error, isStreaming, start, stop, reset } = useStreamData({
  url: '/api/stream',
  onMessage: (chunk, raw) => {
    console.log('收到新消息:', chunk)
  },
  onFinish: () => {
    console.log('流结束')
  }
})
// 开始接收流数据
await start({ message: 'Hello' })
// 停止接收
stop()
// 重置状态
reset()

配置项

参数类型默认值说明
urlstring-SSE 接口地址
method'get' | 'post' | 'put' | 'delete''post'`请求方法
headersRecord<string, string>-请求头
paramKeystring'content'字符串参数的键名
formatPayload(data: any) => any-请求数据格式化函数
formatResponse(response: StreamResponse) => string-响应数据格式化函数
onStart() => void-流开始时的回调
onMessage(text: string, raw: StreamResponse) => void-收到消息的回调
onFinish() => void-流结束时的回调
onError(error: Error) => void-发生错误时的回调
onCancel() => void-流被取消时的回调

返回值

参数类型说明
statusRef<StreamStatus>当前状态
contentRef<string>累积的内容
errorRef<Error | null>错误信息
streamIdRef<string>流ID
isStreamingComputedRef<boolean>是否正在流式传输
start(payload: Record<string, any> | string) => Promise<void>开始流式传输
stop() => void停止流式传输
reset() => void重置状态