什么是webscoket?
webscoket是html5下的一种新的协议,
它实现了浏览器全双工通信,能够更好的节省服务器资源和带宽,并达到实时通信的目的。
webscoket是一个持久化的协议。
webscoket的原理?
- webscoket约定了一个通信的规范,通过一个握手的机制,客户端和服务器之间建立一个类似tcp的连接,从而方便了他们之间的通信。
- 在webscoket出现之前,web交互一般是基于http协议的短连接或者长连接。
- webscoket是一种全新的协议,不属于http无状态协议,协议名为’ws’
Websocket缺点
服务器长期维护长连接需要一定的成本
各个浏览器支持程度不一
websocket 是长连接,受网络限制比较大,需要处理好重连,比如用户进电梯或电信用户打个电话网断了,这时候就需要重连
Websocket的作用
解决了传统轮询(Traditional Polling)、长轮询(Long Polling)带来的问题(服务端负载、延迟等)。
webscoket的特点:
它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种
(1)建立在 TCP 协议之上,服务器端的实现比较容易。
(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
(3)数据格式比较轻量,性能开销小,通信高效。
(4)可以发送文本,也可以发送二进制数据。
(5)没有同源限制,客户端可以与任意服务器通信。
(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。
Websocket应用场景
websocket在实时通信领域运用的比较多,比如社交聊天、弹幕、多玩家游戏、协同编辑、股票基金实时报价、体育实况更新、视频会议/聊天、基于位置的应用、在线教育、智能家居等需要高实时的场景。
Websocket工作流程:
1、客户端发送 http 请求,经过三次握手,建立 TCP连接, 在 http 请求里存放 websocket 支持的版本号等信息; 2、服务器接收请求,同样以 http 协议回应; 3、连接成功,客户端与服务器建立持久性的连接。
http 协议是什么?
超文本传输协议,用于从 www 服务器传输超文本到本地浏览器的传输协议。http 是基于 tcp 协议的一个应用层的协议,由请求和相应构成;是一个无状态的协议。
https:https 就是加密的 http ,它通过 http 进行通信,利用 SSL/TLS 建立安全信道,加密数据包。是计算机网络进行安全通信的传输协议。
HTTP协议的特点:
- 灵活可扩展:(HTTP协议就随着互联网的发展一同成长起来了。在这个过程中,HTTP协议逐渐增加了请求方法、版本号、状态码、头字段等特性。而body也不再限于文本形式的TXT或HTML,而是能够传输图片、音频视频等任意数据,这些都是源于它的“灵活可扩展”的特点)
- 可靠传输(因为HTTP协议是基于TCP/IP的,而TCP本身是一个“可靠”的传输协议,所以HTTP自然 也就继承了这个特性,能够在请求方和应答方之间“可靠”地传输数据。)
- 应用层协议(HTTP几乎可以传递一切东西,满足各种需求,称得上是一个“万能”的协议。)
- 无状态
工作流程:
1、客户端和服务端建立连接,http开始工作; 2、建立连接后客户端发送请求给服务器; 3、服务器收到请求后,给予相应的响应信息; 4、客户端接收服务器返回的数据并在浏览器上展示,然后客户端和服务器连接断开。
webscoket与http的区别?
相同点:
- 都是基于tcp的,都是可靠性传输协议。
- 都是应用层协议。
- websocket 是基于 http 的,他们的兼容性都很好
不同点:
webscoket是双向通信协议,模拟scoket协议,可以双向发送或接收信息。
http是单向的
websocket 是持久连接,http 是短连接;
webscoket是需要浏览器和服务器握手进行建立连接的
http是浏览器发起向服务器的连接,服务器预先并不不知道这个连接。