WebSocket能干些啥?

1)通知功能:
保持一个长连接,当服务端游新的消息,能够实时的推送到使用方 。像知乎的点赞通知、评论等,都可以使用WebSocket通信 。
某些使用H5的客户端,为了简化开发,也会使用WebSocket进行消息的通知,由于它是实时推送的,会有更好的用户体验 。
2)数据收集:
一些次优级别的数据,比如行为日志、trace、异常执栈收集等,都可以开辟专门的WebSocket通道进行传输 。这能够增加信息的集中度,并能及时的针对用户的行为进行合适的配置推送 。由于大多数浏览器内核都支持,它将使客户端APM编程模型变得简单 。
3)加密 && 认证:
虽然使用Fiddler、Charles等能够抓到很多WebSocket包 。但如果同时开启SSL,传输加密后的二进制数据,会大幅增加破解的成本,会安全的多 。
4)反向控制钩子:
这个...由于是双工长连接,服务端完全可以推送一些钩子命令,甚至直接是代码,在客户端进行执行 。比如截个屏,录个音,种个小马 。用户只要通过了授权申请,剩下的就随你发挥了 。
所以就一个梗:支付宝偷偷调用你的相机给你拍照
下面我们就来了解websocket协议:
HTTP是单工的还是双工的还是半双工的先来区分三者的含义1.单工: 数据传输只允许在一个方向上的传输,只能一方来发送数据,另一方来接收数据并发送 。例如:对讲机
2.半双工:数据传输允许两个方向上的传输,但是同一时间内,只可以有一方发送或接受消息 。例如:打电话
3.全双工:同时可进行双向传输 。例如:websocket
http协议是什么工作模式呢分版本,版本不同,工作模式不同
1.http1.0:单工 。因为是短连接,客户端发起请求之后,服务端处理完请求并收到客户端的响应后即断开连接 。
2.http1.1:半双工 。默认开启长连接keep-alive,开启一个连接可发送多个请求 。
3.http2.0:全双工,允许服务端主动向客户端发送数据 。
TCP三次握手四次挥手

WebSocket能干些啥?

文章插图
 
WebSocket:WebSocket和HTTP什么关系?WebSocket和http一样,都是处于OSI模型中的最高层:应用层 。
WebSocket能干些啥?

文章插图
 
WebSocket借助http协议进行握手,三次握手成功后,就会变身为TCP通道,从此与http不再相见 。
WebSocket是一种在单个TCP连接上进行全双工通信的协议 。在WebSocket API中,浏览器和服务器只需要完成一次握手(不是指建立TCP连接的那个三次握手,是指在建立TCP连接后传输一次握手数据),两者之间就直接可以创建持久性的连接,并进行双向数据传输 。
WebSocket能干些啥?

文章插图
 
WebSocket:WebSocket协议只能浏览器发起么?不是 。目前此协议的受众的也不仅仅是web开发者 。
WebSocket只是一种协议,它和http协议一样,使用类似okhttp的组件,可以在任何地方进行调用,甚至可以借助WebSocket实现RPC框架 。
WebSocket能干些啥?

文章插图
 
WebSocket:WebSocket和长轮询有什么区别?
  • 长轮询就是客户端发送一个请求,服务端将一直在这个连接上等待(当然有一个超长的超时时间),直到有数据才返回,它依然是一个一问一答的模式 。比如著名的comted 。WebSocket在握手成功后,就是全双工的TCP通道,数据可以主动从服务端发送到客户端,处于链接两端的应用没有任何区别 。WebSocket创建的连接和Http的长连接是不一样的 。由于Http长连接底层依然是Http协议,所以它还是一问一答,只是Hold住了一条命长点的连接而已 。长轮询和Http长连接是阻塞的I/O,但WebSocket可以是非阻塞的(具体是多路复用)
WebSocket:如何创建一个WebSocket连接?WebSocket的连接创建是借助Http协议进行的 。这样设计主要是考虑兼容性,在浏览器中就可以很方便的发起请求,看起来比较具有迷惑性 。
下图是一个典型的由浏览器发起的ws请求,可以看到和http请求长的是非常相似的 。
但是,它只是请求阶段长得像而已:
WebSocket能干些啥?

文章插图
 
请求的地址: 一般是:ws://***,或者是使用了SSL/TLS加密的安全协议wss:,用来标识是WebSocket请求 。
1)首先,通过Http头里面的Upgrade域,请求进行协议转换 。如果服务端支持的话,就可以切换到WebSocket协议 。简单点讲:连接已经在那了,通过握手切换成ws协议,就是切换了连接的一个状态而已 。


推荐阅读