携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情
介绍一下websocket
- websocket 是一种网络通信协议,是HTML5 开始提供的一种在单个 TCP 连接上进行全双工通信的协议,
- 区别于Http的是,http 协议是一种无状态的、无连接的、单向的应用层协议,通信请求只能由客户端发起,服务端对请求做出应答处理。
- http 协议无法实现服务器主动向客户端发起消息,Websocket 允许客户端和服务器之间进行全双工通信,以便任一方都可以通过建立的连接将数据推送到另一端。
- WebSocket 只需要建立一次连接,就可以一直保持连接状态。
- Websocket其实是一个新协议,本质上跟 HTTP 完全不一样,只是为了兼容现有浏览器的握手规范,WebSocket 的握手是以 HTTP 的形式发起的,如果服务器或者代理不支持 WebSocket,它们会把这当做一个不认识的 HTTP 请求拒绝掉
websocket协议和 HTTP2 有关系么?
没关系,区别如下
-
加密与否:
- WebSocket 支持明文通信 ws:// 和加密 wss://
- 而 HTTP/2 协议虽然没有规定必须加密,但是主流浏览器都只支持 HTTP/2 over TLS.
-
消息推送:
- WebSocket 是一个双向通信协议,它在握手阶段采用 HTTP/1.1 协议(暂时不支持 HTTP/2)。
- WebSocket是全双工通道,可以双向通信。而且消息是直接推送给 Web App.
- HTTP/2 虽然也支持 Server Push,服务器推送只能由浏览器处理,不会在应用程序代码中弹出服务器数据,应用程序没有 API 来获取这些事件的通知。为了接近实时地将数据推送给 Web App, HTTP/2 可以结合 SSE(Server-Sent Event)使用
- WebSocket 适用于接近实时双向通信的领域。而 HTTP/2 + SSE 适合用于展示实时数据
有对应插件
-
向下兼容
- web-socket-js基于flash的兼容方案
- www.jianshu.com/p/e6753a928…