• Websocket


    Websocket

    Websocket实现长连接的原理

    首先Websocket是一个应用层的一种在客户端与服务器之间保持TCP长连接的网络协议,可以建立全双工通信,这样客户端与服务器就可以随时进行信息交换。(虽然任何客户端或服务器上的应用都可以使用WebSocket,但原则上还是指浏览器与服务器之间使用。)通过WebSocket,服务器可以直接向客户端发送数据,而无须客户端周期性的请求服务器,以动态更新数据内容。

    在这个过程中,应用层就是定义了如何解释一段数据流,传输层只保证数据能够发送出去。Websocket只是html5规范中目的为了解决HTTP单向通信的缺点,因为HTTP只规定了单向通信,虽然HTTP当中也有长连接的概念,但是这里的长连接指的是TCP连接不会立即释放;对应的Websocket则是指TCP连接不会释放,然后基于TCP连接,服务器端可以把消息通过WS推送给客户端,客户端也可以推送消息给服务器端的这个双向过程。

    另外,TCP本身是定义了一种把数据原模原样发送出去,只要双方不关闭连接就不会断开连接的协议。

    为什么不选择Socket建立长连接呢

    使用Socket也可以建立长连接,只是跟直接使用Websocket相比,输入输出流我们需要自己去使用不同的API去处理。另外,Websocket是HTML5的规范,本身解决的就是浏览器中JavaScript没有办法创建与系统有关的对象比如Socket,网页开发没有办法独立操作Socket,所以才定义了新的协议让浏览器去实现,这样的一种补救方式。如果客户端要使用这个协议进行通信,也是基于Socket进行封装即可。

    那为什么使用HTTP设置请求头参数让TCP连接保持更长时间呢?协议是双方通信遵循的标准,即使客户端设置的时间再长,但是服务端规定的时间假设最多只有5秒,这也没有办法完成工作;并且如果用HTTP可以设置成保持TCP无限长的时间,服务端的负载将变得很大,可能无法正常工作了。

    数据包格式

    抓包过程与报文格式分析

    使用框架建立长连接

  • 相关阅读:
    [DICOM]SCU和SCP
    [CentOS7]安装Python3
    解决mysqlCannot truncate a table referenced in a foreign key constraint
    对称加密和非对称加密,自签证书,ssl证书
    Qt QRadioButton 选中/取消选中
    Qt QPixmap设置图片透明度
    Qt 建立文件夹、判断文件夹是否存在、文件夹是否为空、清空文件夹
    Qt 删除某文件目录下的空文件夹
    python 3.6 生成器
    tensorflow tfserving 部署记录
  • 原文地址:https://www.cnblogs.com/chen-ying/p/12730752.html
Copyright © 2020-2023  润新知