@mingto/mt-sse
v1.0.28
Published
明途SSE请求工具
Readme
@mingto/mt-sse
用于处理服务器发送事件(Server-Sent Events,SSE)的 TypeScript 库,提供简单易用的接口来管理和监听来自服务器的事件。
特性
- 🔄 事件驱动:支持
start、message、end、error、close等事件 - 📡 自动重连:内置连接管理机制
- 🔧 灵活配置:支持自定义请求头和请求方法
- 🎯 类型安全:完整的 TypeScript 类型定义
安装
pnpm add @mingto/mt-sse快速开始
import SSEClient from '@mingto/mt-sse'
const client = new SSEClient('https://yourserver.com/sse')
client.on('start', (response) => {
console.log('SSE 连接已建立', response)
})
client.on('message', (data) => {
console.log('收到消息:', data)
})
client.on('end', (data) => {
console.log('连接结束:', data)
})
client.on('error', (error) => {
console.error('SSE 错误:', error.message)
})
client.on('close', () => {
console.log('SSE 连接已关闭')
})
// 发送消息
client.send({ key: 'value' })
// 关闭连接
client.closeSSE()配置选项
const options = {
headers: {
'cache-control': 'no-cache',
'Connection': 'keep-alive',
'content-type': 'application/json',
'Language': 'zh'
},
method: 'POST'
}
const client = new SSEClient('https://yourserver.com/sse', options)| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| headers | 请求头 | cache-control: no-cache, Connection: keep-alive, content-type: application/json, Language: zh |
| method | 请求方法 | POST |
事件监听
| 事件名 | 说明 | 回调参数 |
|--------|------|----------|
| start | SSE 连接成功建立时触发 | response |
| message | 接收到消息时触发 | data |
| end | 接收到结束标记时触发(状态码 114) | data |
| error | 发生错误时触发 | SSEError |
| close | 连接正常关闭时触发 | 无 |
client.off(eventName, callback?)
移除事件监听。如果不传回调,则移除该事件的所有监听。
// 移除指定回调
client.off('message', messageCallback)
// 移除该事件的所有回调
client.off('message')
// 移除所有事件的所有回调
client.off()状态码
| 状态码 | 说明 |
|--------|------|
| 112 | 正常消息 |
| 100 | 用户被禁用 |
| 114 | 连接结束 |
错误处理
| 错误代码 | 说明 |
|----------|------|
| 4001 | 浏览器不支持 SSE |
| 4002 | SSE 执行错误 |
| 4003 | SSE 连接错误 |
| 4004 | 未知错误 |
| 4005 | 用户被停用 |
client.on('error', (error) => {
if (error.code === '4001') {
console.error('您的浏览器不支持 SSE')
} else if (error.code === '4003') {
console.error('连接服务器失败,请检查网络')
}
})完整示例
import SSEClient from '@mingto/mt-sse'
const client = new SSEClient('https://yourserver.com/sse', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-token'
}
})
// 监听消息
client.on('message', (data) => {
if (data.type === 'NORMAL') {
// 处理业务数据
console.log('收到数据:', data.content)
}
})
// 监听结束
client.on('end', () => {
console.log('数据接收完成')
})
// 发送请求参数
client.send({
message: 'Hello',
sessionId: '12345'
})许可证
MIT
