长短轮询与长短连接

本文探讨了HTTP协议中的短连接与长连接概念,比较了轮询和长轮询的工作原理,并重点介绍了WebSocket协议如何实现全双工通信。适合理解Web实时应用技术的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

短连接

客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。

长连接

客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

短轮询

浏览器定时向服务器发送请求,看有没有更新的数据,来保持客户端和服务端的同步。

长轮询

长轮询其实 也是客户端请求服务端,但是服务端并不是即时返回,而是当有内容更新的时候才返回内容给客户端,从流程上讲,可以理解为服务器向客户端推送内容;

页面发起一个到服务器的请求,然后服务器一直保持连接打开,直到有数据可以发送。

发送完数据之后,浏览器关闭连接,随即又发送一个到服务器的新请求。这一过程在页面打开期间一直持续不断。(在服务端hold住Http请求(死循环或者sleep等等方式),等到目标时间发生,返回Http响应。

打个比方,短轮询像餐厅的顾客,每隔一会问下饭好了没,长轮询像服务员,一直等在窗口,饭好了才离开,给客户送到后回来继续等下次上菜。

在web开发时经常会遇到实时请求数据的需求,比如聊天功能、投票功能、抢购功能等,实现这些功能常用的技术分别是轮询,长轮询和基于WebSocket协议来实现。

HTTP 协议有一个缺陷:通信只能由客户端发起。这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。虽然轮询可以解决,但频繁的询问会耗费较多资源。

WebSocket

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

参考文献:

什么是轮询、长轮询、长连接一篇文章让你不在懵懂 - 第412篇 - 知乎

### 长短帧分离的概念实现 在计算机网络中,长短帧分离是一种技术手段,旨在优化不同长度的数据帧在网络中的传输效率。这种机制通常应用于复杂的通信协议栈中,特别是在涉及多种数据类型的场景下。 #### 1. **长短帧分离的概念** 长短帧分离的核心在于区分不同类型的数据帧,并为其分配不同的处理路径或资源。具体来说,较短的帧可能优先级更高,需要快速传递以减少延迟;较长的帧则可以容忍更高的延迟,但更关注带宽利用率吞吐量。这一理念可以通过以下两种方式体现: - 数据帧按照其长度被划分为两类:**短帧**(Short Frame)**长帧**(Long Frame)。 - 不同类别的帧会被送入独立的队列或通道进行处理[^4]。 #### 2. **实现方法** 长短帧分离的具体实现依赖于底层硬件设计以及上层软件逻辑的支持。以下是几种常见的实现策略: ##### (1)基于队列调度的分离 通过引入多队列机制,将接收到的数据帧根据长度分发至对应的队列中。例如: - 创建两个独立的队列:一个是针对短帧的高优先级队列,另一个是面向长帧的标准队列。 - 使用加权轮询算法(Weighted Round Robin, WRR)或其他调度算法来平衡两者的流量负载。 ```python def queue_separation(frame_length): if frame_length < SHORT_FRAME_THRESHOLD: return "High Priority Queue" else: return "Standard Queue" SHORT_FRAME_THRESHOLD = 1024 # 假设阈值为1KB frame_queue_mapping = {queue_separation(length): length for length in [512, 2048]} print(frame_queue_mapping) ``` ##### (2)基于标记字段的分离 某些高级网络设备允许在数据帧头部嵌入特定标志位,用于指示该帧属于哪一类。当路由器或交换机解析到这些标志时,会自动将其导向相应的处理流程。 ##### (3)动态调整窗口大小 对于TCP连接而言,全双工特性使得两端能够同时收发数据[^3]。然而,在面对大量小型消息频繁交互的情况下,传统的固定窗口尺寸可能导致不必要的重传开销。因此,可通过自适应调节滑动窗口的方式缓解此问题——即对短帧采用较小初始窗口,而对于大文件下载等操作,则扩大窗口范围以便充分利用可用带宽。 #### 3. **应用场景** 此类技术广泛适用于如下领域: - 多媒体流服务:视频会议系统需兼顾实时语音通话的小型封包及时性需求,同时也得保障高清画质所需的大容量资料顺畅传送; - 工业物联网环境下的传感器节点通讯:由于采集频率各异加上功耗考量因素影响,部分终端只发送少量状态更新信息给云端服务器端分析处理即可满足业务目标,而另一些时候又会产生密集型测量结果上传请求事件发生概率较高情形之下显得尤为重要起来。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值