websocket封装,支持业务的重新订阅,断开重连,支持Rxjs6
npm安装后使用方式如下:
import Ws from 'websocket-perfect'
const ws = new Ws({
url: 'ws://api.weixiaoyi/ws',
buffer: true,
debug: true
})
ws.send({
subscribe: 'apple',
})
.subscribe(([e, data]) => {
console.log(data)
})
const ws = new Ws(options)
const ws = new Ws({
url: 'ws://api.weixiaoyi/ws',
buffer: true, //所有已订阅的业务是否被缓存起来以当socket断开重连后重新订阅
bufferSize: 2, // 最大缓存数量
debug: true, //开启输出log模式
beforeSend:message=>console.log('开始订阅'),
afterSend:message=>console.log('订阅完毕')
})
- 决定
ws.send(message)
的参数message
是否缓存起来,此配置全局有效,权重最高 - Accepts
true
orfalse
- Default value:
undefiend
- 由用户决定
ws.send(message)
的参数message
是否缓存起来,返回true
缓存,返回false
不缓存,该函数第二个参数,是被拦截器处理过的message
,如果没有拦截器,data
完全相等于message
- Accepts
(message,data)=>boolean
- Default value:
undefiend
- 由用户决定
ws.send(message)
的参数message
最大缓存数量 - Accepts
Number
- Default value:
undefiend
ws.send(message)
之前的钩子函数,该函数第二个参数,是被拦截器处理过的message
,如果没有拦截器,data
完全相等于message
- Accepts
(message,data)=>void
- Default value:
undefiend
ws.send(message)
之后的钩子函数,该函数第二个参数,是被拦截器处理过的message
,如果没有拦截器,data
完全相等于message
- Accepts
(message,data)=>void
- Default value:
undefiend
- 订阅业务,该方法返回结果是一个
observable
对象,可直接使用Rxjs
所有的操作符,调用subscrible
方法可立即订阅结果 - message 订阅参数
- 客户端主动关闭websoket连接
- websocket配置拦截器,分别处理
message
发送前的数据和收到响应的数据 - params[0] 拦截器预处理发送参数
- params[1] 拦截器预处理响应的数据,参数
e
是完整的数据,data
是e
的data
属性
- 开启订阅参数的缓存,必须把
buffer
设置为true
bufferSize
决定了最大缓存量bufferWhen
交由用户决定是否缓存该订阅参数- 可以将
ws.send(message)
方法的参数message
添加一个_flush
的属性,或者在ws.interceptor
拦截器给message添加,带有此属性的message
将被自动缓存,该规则权重最低