import {
interval, Subject } from 'rxjs';
export class WebsocketService {
messageSubject; // subject对象,用于发送事件
url; // 默认请求的url
webSocket; // websocket对象
connectSuccess = false; // websocket 连接成功
period = 10 * 1000; // 10s检查一次
serverTimeoutSubscription = null; // 定时检测连接对象
reconnectFlag = false; // 重连
reconnectPeriod = 5 * 1000; // 重连失败,则5秒钟重连一次
reconnectSubscription = null; // 重连订阅对象
runTimeSubscription; // 记录运行连接subscription
runTimePeriod = 60 * 10000; // 记录运行连接时间
eventTimestamp = new Date().getTime();
constructor() {
this.messageSubject = new Subject();
// console.log('开始心跳检测');
// 进入程序就进行心跳检测,避免出现开始就连接中断,后续不重连
// this.heartCheckStart();
this.calcRunTime();
}
/**
* 发送消息
* @param message 发送消息
*/
sendMessage(message) {
this.webSocket.send(message);
}
/**
* 创建新连接
* @param url 要连接的url
*/
connect(url) {
if (url) {
this.url = url;
}
// 创建websocket对象
this.createWebSocket();
}
/**
* 创建连接
*/
createWebSocket() {
console.log('createWebSocket:', this.url);
// 如果没有建立过连接,才建立连接并且添加时间监听
this.webSocket = new WebSocket(this.url
ts封装websocket
最新推荐文章于 2024-08-05 17:07:25 发布