一个网页可以跟服务器保持多个TCP连接通道么?

RT,现在网页跟服务器通信,有频繁的数据请求,服务器的配置connection:keep-alive,也就是一直在复用一个TCP通道,但是偶尔会出现通信情况极差,不能早要求的时间内返回数据,有没有可能让它保持两个TCP通道让我轮换使用,一个超时可以用另外一个保证传输?(这是一种猜测的尝试,就想问有没有可能实现,不要分析猜测可信度大不大)
慕丝7291255
浏览 1165回答 2
2回答

暮色呼如

浏览器的实现层面,目前无法使用JavaScript面向TCP编程,针对这个问题,从几个角度回答一下:keep-alive是存在timeout的(通常在1分钟内),此后的HTTP请求会通过建立新的TCP链接,进行通信。因此不是高频的通信,keep-alive未必能发挥真正的作用。即使是在timeout内的通信,每次HTTP请求的Header都会反复传输,因为HTTP/1.1协议是无状态的。这会导致在高频通信的过程,流量中信息的有效传输率是较低的。如何避免这个影响请看第4条。偶尔出现的通信极差情况,如果根本原因在于网络的波动,那么多加几条TCP通道是无益的。客观地说,网络波动带来的通信失败,是不太可能再通过技术手段提升的,因为TCP协议已经保证了数据的有效传输,但因波动而导致的TCP丢包、重传是必须经历的时间,躲不过去。如果有条件,可以使用HTTP/2协议,其二进制分帧、首部压缩、多路复用的特性,能够解决因协议导致的链路问题。但是,由网络波动、信号差情况导致的通信效果不理想,已经不在技术能够解决的范畴内了。

慕田峪4524236

网页内没有这个层面的直接控制:浏览器也许有很大的tcp连接池,也许连keep-alive都不管,对网页来说无法区分。不过:一个(还没结束的)请求下面应该总有一个TCP通道,一个websocket连接下面也有,所以保持连接应该是可以间接做到的。这个方法对解决你的问题可能没帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript