php长连接demo心跳包,websocket 以及心跳检测实现长连接

本文介绍了如何在JavaScript中初始化WebSocket连接,包括URL构建、事件监听和错误处理。着重讲述了onopen、onmessage、onerror和onclose事件的处理,以及遇到异常时的重连机制。
摘要由CSDN通过智能技术生成

initWebSocket () { // 初始化weosocket

this.destroyWebSocket()

try {

console.log('连接websocket')

const wsuri = 'ws://' + this.dataM.split('/')[2] + '?pageId=' + generateUUID()// ws地址

this.webSocket = new WebSocket(wsuri)

this.webSocket.onopen = (event) => {

console.log('send:' + this.currSceneInfo.id)

this.webSocket.send(this.currSceneInfo.id)

this.heartCheck.start(this.webSocket) // 心跳

}

this.webSocket.onmessage = (event) => {

if (event.data === 'HeartBeat') {

console.log('收到了心跳检测')

this.heartCheck.start(this.webSocket) // 心跳

} else {

const data = JSON.parse(event.data)

}

}

this.webSocket.onerror = () => {

console.log('发生异常了')

this.reconnect() // 重连

}

this.webSocket.onclose = (event) => {

console.log('断线重连')

this.reconnect() // 重连

}

} catch (e) {

console.log(e.message)

this.reconnect()

}

},

d747f678a1b1c7d3574f21e31ba86788.png

destroyWebSocket () {

if (this.webSocket) {

this.webSocket.onclose = (event) => {

console.log('链接关闭')

}

this.webSocket.close()

this.webSocket = null

}

},

b211e5d7cbf5f421ca922eb073526b6f.png

destroyed () {

this.destroyWebSocket()

},

reconnect () {

if (this.lockReconnect) {

return

}

1239ed185c0242eb3fa306028a27daeb.png

this.lockReconnect = true

// 没连接上会一直重连,设置延迟避免请求过多

this.tt && clearTimeout(this.tt)

this.tt = setTimeout(() => {

this.initWebSocket()

this.lockReconnect = false

}, 4000)

},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值