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()配置项
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| url | string | - | SSE 接口地址 |
| method | 'get' | 'post' | 'put' | 'delete' | 'post'` | 请求方法 |
| headers | Record<string, string> | - | 请求头 |
| paramKey | string | '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 | - | 流被取消时的回调 |
返回值
| 参数 | 类型 | 说明 |
|---|---|---|
| status | Ref<StreamStatus> | 当前状态 |
| content | Ref<string> | 累积的内容 |
| error | Ref<Error | null> | 错误信息 |
| streamId | Ref<string> | 流ID |
| isStreaming | ComputedRef<boolean> | 是否正在流式传输 |
| start | (payload: Record<string, any> | string) => Promise<void> | 开始流式传输 |
| stop | () => void | 停止流式传输 |
| reset | () => void | 重置状态 |