WebSocket 和 HTTP 的区别及原理

参考:https://www.v2ex.com/amp/t/473376参考:http://www.ruanyifeng.com/blog/2017/05/websocket.html 一、为什么需要 WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查
摘要由CSDN通过智能技术生成

参考:https://www.v2ex.com/amp/t/473376

参考:http://www.ruanyifeng.com/blog/2017/05/websocket.html

  • 一、为什么需要 WebSocket?

初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?

答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。

举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。

这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询":每隔一段时候,就发出一个询问,了解服务器有没有新的信息。最典型的场景就是聊天室。

轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。因此,工程师们一直在思考,有没有更好的方法。WebSocket 就是这样发明的。

  • 二、简介

WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

 

其他特点包括:

(1)建立在 TCP 协议之上,服务器端的实现比较容易。

(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

(3)数据格式比较轻量,性能开销小,通信高效。

(4)可以发送文本,也可以发送二进制数据。

(5)没有同源限制,客户端可以与任意服务器通信。

(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。


ws://example.com:80/some/path

websocket 请求头格式

GET /ws HTTP/1.1
Host: 192.168.33.1:8099
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: http://dev.1thx.com
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36 QQBrowser/4.3.4986.400
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Sec-WebSocket-Key: mIsurCgKrroYO7m/0QNqRg==
Sec-WebSocket-Extensions: permessage-deflate; client_
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebSocket是一种在单个TCP连接上进行全双工通信的通信协议。它通过HTTP协议进行握手,然后在同一个TCP连接上进行数据传输。下面是WebSocket原理和流程: 1. 客户端发起WebSocket连接请求:客户端通过发送一个HTTP请求报文,其中包含特定的Upgrade头部,请求服务器升级到WebSocket协议。 2. 服务器响应握手请求:服务器收到客户端的请求后,检查是否支持WebSocket协议。如果支持,服务器会发送一个HTTP响应报文作为握手响应,其中包含特定的Upgrade头部,并返回状态码101 Switching Protocols,表示升级到WebSocket协议成功。 3. WebSocket连接建立:客户端收到服务器的握手响应后,会验证响应是否符合WebSocket协议规范。如果验证通过,客户端和服务器的连接就建立起来了。 4. 数据传输:一旦WebSocket连接建立成功,客户端和服务器就可以在同一个TCP连接上进行双向的数据传输。双方可以发送和接收任意类型的数据,不再受HTTP协议的限制。 5. 连接关闭:当客户端或服务器决定关闭WebSocket连接时,可以发送一个特定的关闭帧来进行通知。双方收到关闭帧后,会进行相应的处理并关闭连接。 总结起来,WebSocket通过HTTP协议进行握手,建立起全双工的通信连接,然后在该连接上进行数据传输。相比于HTTP协议,WebSocket具有更低的延迟和更高的实时性,适用于需要频繁、实时交互的应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值