业界动态
websocket心跳链接代码_websocket协议及使用
2024-10-31 18:12

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

websocket心跳链接代码_websocket协议及使用

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

传统的HTTP协议是一个请求-响应协议,浏览器不主动请求,服务器是没法主动发数据给浏览器的。

Ajax 轮询

浏览器通过Javascript启动一个定时器,然后以固定的间隔给服务器发请求,询问服务器有没有新消息。

  • 实时性不够
  • 频繁的请求会给服务器带来极大的压力。

服务器反推

本质上也是轮询,但是在没有消息的情况下,服务器先拖一段时间,等到有消息了再回复。暂时地解决了实时性问题。

  • 以多线程模式运行的服务器会让大部分线程大部分时间都处于挂起状态,极大地浪费服务器资源。
  • 一个HTTP连接在长时间没有数据传输的情况下,链路上的任何一个网关都可能关闭这个连接。 长期占用连接,丧失了无状态高并发的特点。

WebSocket并不是全新的协议,而是利用了HTTP协议来建立TCP连接。

1 请求

WebSocket连接必须由浏览器发起,因为请求协议是一个标准的HTTP请求。

格式如下

WebSocket请求和普通的HTTP请求不同

  • GET请求的地址不是类似/path/,而是以ws://开头的地址
  • 请求头Upgrade: websocket和Connection: Upgrade表示这个连接将要被转换为WebSocket连接
  • Sec-WebSocket-Key是用于标识这个连接,并非用于加密数据
  • Sec-WebSocket-Version指定了WebSocket的协议版本。

2 响应

服务器如果接受该请求,就会返回如下响应

响应代码101表示本次连接的HTTP协议即将被更改,更改后的协议就是Upgrade: websocket指定的WebSocket协议

WebSocket、HTTP 与 TCP 区别

HTTP、WebSocket 等应用层协议,都是基于 TCP 协议来传输数据的。 所以连接和断开,都要遵循 TCP 协议中的三次握手和四次握手 ,只是在连接之后发送的内容不同,或者是断开的时间不同。

对于 WebSocket 来说,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

主机 A 的应用程序要能和主机 B 的应用程序通信,必须通过 Socket 建立连接,而建立 Socket 连接必须需要底层 TCP/IP 协议来建立 TCP 连接。建立 TCP 连接需要底层 IP 协议来寻址网络中的主机。我们知道网络层使用的 IP 协议可以帮助我们根据 IP 地址来找到目标主机,但是一台主机上可能运行着多个应用程序,如何才能与指定的应用程序通信就要通过 TCP 或 UPD 的地址也就是端口号来指定。这样就可以通过一个 Socket 实例唯一代表一个主机上的一个应用程序的通信链路了。

WebSocket 则不同,它是一个完整的 应用层协议,包含一套标准的 API。

从使用上来说,WebSocket 更易用,而 Socket 更灵活。

WebSocket API 是 HTML5 标准的一部分, 但这并不代表 WebSocket 一定要用在 HTML 中,或者只能在基于浏览器的应用程序中使用。

注意事项

长连接应用必须加心跳,否则连接可能由于长时间未通讯被路由节点强行断开。

  • 客户端定时给服务端发送点数据,防止连接由于长时间没有通讯而被某些节点的防火墙关闭导致连接断开的情况。
  • 服务端可以通过心跳来判断客户端是否在线,如果客户端在规定时间内没有发来任何数据,就认为客户端下线。这样可以检测到客户端由于极端情况(断电、断网等)下线的事件。

心跳间隔建议值

建议客户端发送心跳间隔小于60秒,比如55秒。

1 属性

Socket.readyState

只读属性 readyState 表示连接状态,可以是以下值

Socket.bufferedAmount

只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。

2 事件

3 方法

参考: https://www.liaoxuefeng.com/wiki/1022910821149312/1103303693824096

服务端代码:

这里采用php方式来进行演示,其他语言也是类似,不在叙述。

客户端代码

    以上就是本篇文章【websocket心跳链接代码_websocket协议及使用】的全部内容了,欢迎阅览 ! 文章地址:http://lianchengexpo.xrbh.cn/news/11548.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://lianchengexpo.xrbh.cn/mobile/ , 查看更多   
最新新闻
刘畊宏直播2小时收入120万,打赏的榜一大哥都是什么人?
说起最近这段时间直播界最火的网红明星,非“健身达人”刘畊宏莫属,从今年4月初开始,全国各地都有人因疫情被封控,而刘畊宏的
国家要普涨工资,地方正狂卷就业,让大家挣钱最重要
最近,有一个重要的文件和每个人的“钱袋子”息息相关。那就是《中共中央、国务院关于实施就业优先战略促进高质量充分就业的意见
实探债务危机中的柔宇科技:生产基地半小时只看到3个人,手机业务已停摆
2023年是折叠屏手机爆发年,诸多柔性屏供应商、手机厂商吃到红利。然而面对这样的好光景,柔宇科技却只剩一片残局。曾经凭借柔性
今日头条iphone最新版特色
今日头条ios2021最新版是专为苹果手机用户打造的头条新闻资讯应用,打开今日头条,即可知道今天发生了哪些大事,还有最新的娱乐
一张床垫用N年,弹簧早就疲软了,撑不住儿童发育的脊梁,赶紧换!
你家孩子睡的弹簧床垫陪伴TA多少年了?尤其是弹簧床垫,通常睡上3~5年的儿童床垫,金属弹簧就会呈现不同程度的疲软,这将严重影
增长黑客,创业公司用户增长的秘籍
增长黑客读了范冰的《增长黑客》,启发太多。正如作者在前言中所说,确实是处处均是干货,书里脉络清晰,是本难得的好书。增长黑
实用的高考化学考试答题思路与技巧
高考的化学考试答题要联系所学习的知识,找到知识与问题之间的结合点,确定解题的方案,这才是解题的关键。下面是小编为大家整理
小红书情人节营销指南
│前言│小红书作为女生的口袋百科指南,提供了各种各样的节日攻略内容,同时引导着用户去享受更好的生活,而在即将到来的214情
云南SEO优化如何让描述中出现地址呢?
在搜索引擎优化(SEO)的世界中,整合关键信息,如地址,到网页描述中是提升网站在搜索引擎结果页面上的可见性和点击率的关键策
实用贴!海关统计数据查询攻略
海关统计数据查询攻略为便于社会公众查询和使用海关进出口货物贸易统计数据(以下简称海关统计数据),特编制本查询攻略。一定期
本企业新闻
推荐企业新闻

点击拨打: