根据 websocket-heartbeat-js 编写的ts版本
- 使用
getInstance
获得ws实例, 而不是new
关键字. - 因为这可以确保对于相同的URL地址,当它不是初始调用时,它将获取现有实例,而不是创建相同URL的WS连接。
/** ts */
import WsHeartBeat from '@findsoft/ws-heartbeat-ts';
// your interface
interface IObj extends FWsData {
id: string,
typess: string
}
const wsInstance: WsHeartBeat = WsHeartBeat.getInstance(opt);
const myData = {id: 1, data: 2};
// 发送-json格式——自动 JSON.stringify
wsInstance.sendData( myData );
// 发送-普通格式
wsInstance.send( JSON.stringify(myData) );
// 接收-json格式(如果 JSON.parse 抛错,则会返回ws原始数据)
wsInstance.onmessage = (data: IObj, wsEvent: MessageEvent) => {
console.log(data, 'data\nwsEvent', wsEvent);
};
参数 | 是否必填 | 类型 | 默认 | 说明 |
---|---|---|---|---|
url | true | string | ws地址 | |
pingTimeout | false | number | 5000 | 心跳包发送频率 |
pongTimeout | false | number | 10000 | 超时时间,超过判定为断开 |
reconnectTimeout | false | number | 2000 | 重连延时,每time毫秒尝试重连 |
pingMsg | false | string | "{}" | 心跳包内容 |
repeatLimit | false | number | 5 | 尝试重连的次数 |
dataType | false | json/byte | 'json' | ws-message返回的数据格式 |
byteFormat | false | utf-8 | 'utf-8' | 如果为byte类型,编码方式为utf-8 |
- 需要和后端讨论 收发消息 的数据格式
- ts可以使用
singleton
单例模式开发,在ts项目中,可以保证同一个ws地址,只会有一个连接( version >= 0.5.x) - ts可以自动生成
.d.ts
的声明文件 -->
其他文档可以参见 websocket-heartbeat-js