http和ws的区别

[复制链接]
发表于 2025-11-4 21:51:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一. 毗连创建

1.HTTP:

(1)使用TCP协议创建毗连
(2)每次哀求都是独立的,纵然是同一用户的连续哀求,也会重复创建和断开毗连(除非使用了HTTP/2或恒久毗连)
(3)无状态协议。不生存状态信息,每次哀求都须要全部信息(包罗cookie等)来确定用户状态
2.WebSocket:

(1)初次毗连时通过HTTP举行握手(HTTP 101状态码),之后升级为WebSocket协议
(2)一旦创建毗连,除非主动关闭,否则将保持毗连状态
(3)有状态毗连,保持恒久毗连,支持状态信息的恒久化传输,不需每次都通报全部信息
二.数据传输

1.HTTP:

(1)哀求-相应模子。客户端发起哀求,服务器相应哀求
(2)信息传输包罗较多的头部数据(HTTP headers),每次哀求都大概包罗重复的头信息
(3)实用于短毗连,传输完毕即断开
2.WebSocket

(1)双向通讯。一旦毗连创建,客户端和服务器可以相互发送消息,不须要等候对方发起哀求
(2)由于毗连的恒久保持,数据传输只需少量的头部信息(WebSocket帧头部),传输更加高效
(3)实用于长毗连,特别是须要频仍交互的应用,如实时谈天、游戏等
三.性能和服从

1.HTTP:

(1)由于每次哀求都须要创建和关闭毗连,性能开销较大
(2)适当低频率、一次性的数据哀求,不适当频仍交互
2.WebSocket:

(1)保持毗连状态,可以高效地举行频仍的数据传输
(2)性能高,耽误小,非常实用于实时性要求高的应用
四.示例

1.http:
  1. GET /api/v1/resource HTTP/1.1
  2. Host: example.com
  3. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/58.0.3029.110 Safari/537.3
  4. Accept: application/json
  5. Cookie: sessionId=abc123
  6. <服务器响应>
  7. HTTP/1.1 200 OK
  8. Content-Type: application/json
  9. Set-Cookie: sessionId=abc123; Path=/
  10. {
  11.   "data": "example"
  12. }
复制代码
2.WebSocket:
  1. // 握手请求
  2. GET /chat HTTP/1.1
  3. Host: example.com
  4. Upgrade: websocket
  5. Connection: Upgrade
  6. Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
  7. Sec-WebSocket-Version: 13
  8. <服务器响应>
  9. HTTP/1.1 101 Switching Protocols
  10. Upgrade: websocket
  11. Connection: Upgrade
  12. Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
  13. <数据传输>
  14. 客户端发送帧:
  15. 0x81 0x05 0x48 0x65 0x6C 0x6C 0x6F  (代表 "Hello")
  16. 服务器回应帧:
  17. 0x81 0x06 0x57 0x6F 0x72 0x6C 0x64 0x21  (代表 "World!")
复制代码
五.长毗连与短毗连

1.http:

(1)通常使用短毗连,每次哀求都会创建一次毗连,处置惩罚完后立刻关闭
(2)可以通过HTTP/1.1的恒久毗连(Keep-Alive)机制实现长毗连,但仍不适当频仍通讯
2.WebSocket:

(1)本质上是长毗连,一旦毗连创建,将连续到一方关闭毗连
(2)非常适当须要连续通讯的应用场景,如实时消息推送、在线协作等
六.应用场景

1.http:

(1)静态资源加载,如HTML、CSS、JavaScript文件
(2)API哀求和相应,如RESTful API调用
(3)实用于对实时性要求不高,且频次不高的通讯
2.WebSocket:

(1)实时通讯,如在线谈天、在线游戏
(2)实时数据推送,如股票行情、体育角逐直播
(3)在线协作工具,如Google Docs实时编辑、多人白板等
七.增补

1.HTTP:


  • 用途:重要用于哀求-相应模式的通讯,如欣赏网页、API调用等。
  • 毗连方式:基于哀求-相应模式。客户端(如欣赏器)向服务器发起哀求,服务器处置惩罚哀求并返反相应。
  • 状态:无状态。每次哀求都是独立的,不依靠其他哀求。
  • 端口:通常使用端口80(HTTP)和443(HTTPS)。
  • 数据方向:单向。客户端发起哀求,服务器返反相应。
  • 头部信息:每次哀求和相应都包罗大量头部信息,可以携带元数据。
2.WebSocket:


  • 用途:用于创建恒久的、双向通讯通道,实用于实时应用,如谈天应用、在线游戏等。
  • 毗连方式:在初始的HTTP握手之后,毗连升级为WebSocket协议。握手乐成后,创建一个恒久的、全双工毗连。
  • 状态:有状态。毗连一旦创建,通讯双方保持毗连直到一方关闭。
  • 端口:通常使用端口80和443,但在握手之后毗连会升级为WebSocket。
  • 数据方向:双向。客户端和服务器可以相互发送消息,而不须要新建毗连。
  • 头部信息:初始握手时包罗HTTP头部信息,但创建毗连后,实际的消息传输较少头部信息,进步传输服从。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表