【前端】websocket 讲解与项目中的使用(附源码)

let url = ${process.env['VUE_APP_WEBSOCKET']}/websocket

let ws = new WebSocket(url)

ws.addEventListener(‘open’, e => {

console.log(‘长连接连接成功’)

// 执行心跳方法

dispatch(‘wsHeartStart’)

})

websocket 链接成功以后,开启心跳方法。心跳功能的实现如下:

const state = {

ws: null,

// 心跳时间(s)

wsTimeout: 20,

// 等待心跳响应时间(s),等待心跳的响应时间要大于心跳时间5s以上

waitHeartTime: 25

}

// 开启心跳

wsHeartStart({ state, dispatch }) {

timer.wsTimeoutObj = setTimeout(() => {

if(state.ws && state.ws.readyState == 1) {

state.ws.send(‘’)

} else {

dispatch(‘handlerWSError’)

}

}, state.wsTimeout * 1000)

timer.serverTimeoutObj = setTimeout(() => {

console.log(‘接收心跳异常!’)

dispatch(‘handlerWSError’)

}, state.waitHeartTime * 1000)

}

稍微解释一下:上面这个代码片段,描述了心跳的基本意思;就是用定时器去向服务端发送一个空的字符串,我们与后端约定,当后端 ws 收到空字符串的时候,要回一个字符串。如果我们没有收到,则判断为 接收心跳异常,准备重连机制。(完整代码在文章末尾)

要点总结

===================================================================

要点总结的内容,建议大家细细品一下。

  • WebSocket 协议本质上是一个基于 TCP 的协议。为了建立一个 WebSocket 连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息 "Upgrade: WebSocket" 表明这是一个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket 连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。【如下图:】

前端websocket是一种在浏览器和服务器之间实现双向通信的协议。它使用WebSocket API建立起浏览器和服务器之间的持久连接,使得服务器能够主动向浏览器发送数据,而不需要浏览器每次都发送请求。通过发送心跳消息来保持连接的稳定性,当服务器收到心跳消息后,可以回复一个消息给前端,如果前端没有收到回复,则可以进行重连操作来确保WebSocket保持连接状态。通过WebSocket的open事件来监听连接的建立,一旦连接建立成功,就可以执行心跳方法,保持连接的稳定性。 WebSocket协议相对于传统的HTTP协议有很多优势,比如实时性更好、减少了网络传输的开销、支持双向通信等。因此,在前端开发WebSocket被广泛应用于实时聊天、实时更新等场景。通过WebSocket API,可以简单地实现与服务器的双向通信,并且可以与其他前端框架或库(如Vue、React)进行集成,从而实现更丰富的功能和交互体验。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【前端websocket 讲解项目使用源码)](https://blog.csdn.net/csdn_yudong/article/details/118311227)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值