• 长链接概念


    websocket 基础理解

    webSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。WebSocket协议在2011年由IETF标准化为RFC 6455,后由RFC 7936补充规范。Web IDL中的WebSocket API由W3C标准化。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。

    通过上述对websocket的定义,我们知道如下几个关于websocket特点:

    websocket 是一种网络传输协议
    websocket 是基于tcp 协议的
    websocket 是全双工的 (客户端和服务端都可以主动通信)
    websocket 是持久性连接
    补充关于websocket 的特点 :

    大部分编程语言都能实现websocket服务端和客户端
    websocket 协议得到了当前绝大部分浏览器的支持(web浏览器作为websocket的客户端)
    与http协议兼容,默认的工作端口是 80(http) 和 443(https)
    websocket 是一个应用层协议 , 但是websocket必须依赖HTTP协议进行第一次握手 , 握手成功之后数据直接从TCP通道传输 , 此时就和HTTP无关了
     

    1. General
    2. Request URL: ws://127.0.0.1/echo
    3. Request Method: GET
    4. Status Code: 101 Switching Protocols
    5. Response Headers
    6. HTTP/1.1 101 Switching Protocols
    7. Upgrade: websocket
    8. Connection: Upgrade
    9. Sec-WebSocket-Accept: c/LP8JsVmZWV/EB3lgGDVmVQWVA=
    10. Request Headers
    11. GET ws://127.0.0.1/echo HTTP/1.1
    12. Host: 127.0.0.1
    13. Connection: Upgrade
    14. Pragma: no-cache
    15. Cache-Control: no-cache
    16. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
    17. Upgrade: websocket
    18. Origin: http://127.0.0.1:5500
    19. Sec-WebSocket-Version: 13
    20. Accept-Encoding: gzip, deflate, br
    21. Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
    22. Sec-WebSocket-Key: rRXp2i/XCuCsKqs5MN12Ag==
    23. Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

    解释 :

    101 Switching Protocols : 101状态码是switching protocols,表示服务器已经理解了客户端的请求,并将通过Upgrade子段通知客户端采用WebSocket协议来完成这个请求

    Connection: Upgrade 的值必须是 upgrade 表示请求升级

    Upgrade: websocket 的值必须设置成 websocket 表示升级为websocket 协议

    Sec-WebSocket-Version: 13 表示支持的websocket的版本

    Sec-WebSocket-Key 发给服务端的随机字符串

    Sec-WebSocket-Accept 响应给客户端的值

    http和websocket比较

    在这里插入图片描述

    **相同点 : **

    都是基于TCP 协议
    都有加密传输 ws 和 wss , http 和 https
    都是应用层协议
    **不同点 : **

    websocket 是双工通信协议 , http 但是单向协议
    某种意义上来说websocket 补上了http的一些不足

     相关例子可以参考pc抖音或b站

  • 相关阅读:
    【从零开始】Docker Desktop:听说你小子要玩我
    Java多线程探究【四线程协作】
    Docker安装pgAdmin4
    爬虫ip如何加入到代码里实现自动化数据抓取
    <MySQL> 表的增删改查 - 基本查询
    显卡核心 短路 原因是什么?
    基于风险的漏洞管理实现高效安全
    精讲算法的时间复杂度
    【运维自动化-配置平台】如何使用云资源同步功能(腾讯云为例)
    操作系统-进程与线程(进程的概念、组成、特征、状态与转化)
  • 原文地址:https://blog.csdn.net/climb_up/article/details/126092581