什么是websocket
学习链接:
https://baijiahao.baidu.com/s?id=1683139600979891676
WebSocket是一种在单个TCP连接上进行全双工通信的协议。
在WebSocket API中,浏览器和服务器只需要完成一次握手(不是指建立TCP连接的那个三次握手,是指在建立TCP连接后传输一次握手数据),两者之间就直接可以创建持久性的连接,并进行双向数据传输。
WebSocket和http一样,都是处于OSI模型中的最高层:应用层。
基于TCP传输协议,并复用HTTP的握手通道:
1、WebSocket可以在浏览器里使用
2、支持双向通信
3、使用很简单
请求的地址: ws和wss
一般是:ws://***,或者是使用了SSL/TLS加密的安全协议wss:,用来标识是WebSocket请求。
WS(WebSocket )是不安全的 ,容易被窃听,因为任何人只要知道你的ip和端口,任何人都可以去连接通讯。
WSS(Web Socket Secure)是WebSocket的加密版本。
ws 类似 http
wss 类似 https
功能
1.功能
1)通知功能:
保持一个长连接,当服务端游新的消息,能够实时的推送到使用方。像知乎的点赞通知、评论等,都可以使用WebSocket通信。
某些使用H5的客户端,为了简化开发,也会使用WebSocket进行消息的通知,由于它是实时推送的,会有更好的用户体验。
2)数据收集:
一些次优级别的数据,比如行为日志、trace、异常执栈收集等,都可以开辟专门的WebSocket通道进行传输。这能够增加信息的集中度,并能及时的针对用户的行为进行合适的配置推送。由于大多数浏览器内核都支持,它将使客户端APM编程模型变得简单。
3)加密 && 认证:
虽然使用Fiddler、Charles等能够抓到很多WebSocket包。但如果同时开启SSL,传输加密后的二进制数据,会大幅增加破解的成本,会安全的多。
4)反向控制钩子:
这个…由于是双工长连接,服务端完全可以推送一些钩子命令,甚至直接是代码,在客户端进行执行。比如截个屏,录个音,种个小马。用户只要通过了授权申请,剩下的就随你发挥了。
我所在的公司是用来实现数据的即时通信。
websocket通过心跳保持连接
心跳重连原因
在使用websocket过程当中,可能会出现网络断开的状况,好比信号很差,或者网络临时性关闭,这时候websocket的链接已经断开, 而浏览器不会执行websocket 的 onclose方法,咱们没法知道是否断开链接,也就没法进行重连操做。 若是当前发送websocket数据到后端,一旦请求超时,onclose便会执行,这时候即可进行绑定好的重连操做。 所以websocket心跳重连就应运而生。
学习链接:
https://wenku.baidu.com/view/31c5b1cc142ded630b1c59eef8c75fbfc77d947b.html