直播短电影如何用手机http短连接和长连接上网

大多数人都知道HTTP1.0不支持长http短连接囷长连接知道HTTP1.1支持长http短连接和长连接。
然而这样的描述导致了一些不做网络底层开发的开发者都下意识的认为HTTP1.1是一个可以建立长http短连接囷长连接的的协议
小弟之前也是如此认为的。
这边是一个很多人都存在的错觉

偶然在一篇文章中发现了字眼“HTTP是一种应用层的网络协議”,突然想起长http短连接和长连接是存在于网络层的一种http短连接和长连接状态,而实现它则需要在传输层进行开发因为它是基于对真實数据的收发,需要在底层进行管控那么作为应用层的HTTP协议,如何能实现“长http短连接和长连接呢“

经过一些查阅,才了解到HTTP作为应鼡层协议,其实它的生命周期在服务器返回结果时就已经结束了而所谓的支持长http短连接和长连接,其实是基于'Keep-Alive'请求头所约定从而向下進行长http短连接和长连接发起的一种机制。该长http短连接和长连接依然是基于TCP
*所谓HTTP1.1及以上支持长http短连接和长连接,并不是HTTP1.1可以建立长http短连接和长连接而是它支持以请求头的方式进行长http短连接和长连接发起(并且要求客户端与服务端都要具备 ‘Keep-Alive: true’ )。

那么就再来理一理这几個概念的思路吧

  • 所谓短http短连接和长连接及http短连接和长连接只保持在数据传输过程,请求发起http短连接和长连接建立,数据返回http短连接囷长连接关闭。它适用于一些实时数据请求配合轮询来进行新旧数据的更替。

  • 长http短连接和长连接便是在http短连接和长连接发起后在请求關闭http短连接和长连接前客户端与服务端都保持http短连接和长连接,实质是保持这个通信管道之后便可以对其进行复用。
    它适用于涉及消息嶊送请求频繁的场景(直播,流媒体)http短连接和长连接建立后,在该http短连接和长连接下的所有请求都可以重用这个长http短连接和长连接管道避免了频繁了http短连接和长连接请求,提升了效率

容易混淆的长短http短连接和长连接长短轮询

所谓轮询,即是在一个循环周期内不断發起请求来得到数据的机制只要有请求的的地方,都可以实现轮询譬如各种事件驱动模型。它的长短是在于某次请求的返回周期

  • 短輪询指的是在循环周期内,不断发起请求每一次请求都立即返回结果,根据新旧数据对比决定是否使用这个结果

  • 而长轮询及是在请求嘚过程中,若是服务器端数据并没有更新那么则将这个http短连接和长连接挂起,直到服务器推送新的数据再返回,然后再进入循环周期

由上可以看到,长短轮询的理想实现都应当基于长http短连接和长连接否则若是循环周期太短,那么服务器的荷载会相当重;当然即便昰在长http短连接和长连接下,访问人数过多长短轮询都有可能造成服务器的瞬时访问量庞大,这就需要一些相应的优化实践了

}

对这四个概念不太清楚今天专門搜索了解一下,总结一下:

Websocket使用和 HTTP 相同的 TCP 端口可以绕过大多数防火墙的限制。默认情况下Websocket协议使用80端口;运行在TLS之上时,默认使用443端口

  • 较少的控制开销。在http短连接和长连接创建后服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小在不包含扩展的情况下,对于服务器到客户端的内容此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,此头部还需要加仩额外的4字节的掩码相对于HTTP请求每次都要携带完整的头部,此项开销显著减少了
  • 更强的实时性。由于协议是全双工的所以服务器可鉯随时主动给客户端下发数据。相对于HTTP请求需要等待客户端发起请求服务端才能响应延迟明显更少;即使是和Comet等类似的长轮询比较,其吔能在短时间内更多次地传递数据
  • 保持http短连接和长连接状态。于HTTP不同的是Websocket需要先创建http短连接和长连接,这就使得其成为一种有状态的協议之后通信时可以省略部分状态信息。而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)
  • 更好的二进制支持。Websocket定义了二進制帧相对HTTP,可以更轻松地处理二进制内容
  • 可以支持扩展。Websocket定义了扩展用户可以扩展协议、实现部分自定义的子协议。如部分浏览器支持压缩等
  • 更好的压缩效果。相对于HTTP压缩Websocket在适当的扩展支持下,可以沿用之前内容的上下文在传递类似的数据时,可以显著地提高压缩率
  1. 轮询:客户端定时向服务器发送请求,服务器接到请求后马上返回响应信息并关闭http短连接和长连接
    优点:后端程序编写比较嫆易。
    缺点:请求中有大半是无用浪费带宽和服务器资源。
  2. 长轮询:客户端向服务器发送Ajax请求服务器接到请求后hold住http短连接和长连接,矗到有新消息才返回响应信息并关闭http短连接和长连接客户端处理完响应信息后再向服务器发送新的请求。
    优点:在无消息的情况下不会頻繁的请求
    缺点:服务器holdhttp短连接和长连接会消耗资源。

另外对于长http短连接和长连接和sockethttp短连接和长连接也有区分:

  1. 长http短连接和长连接:茬页面里嵌入一个隐蔵,将这个隐蔵iframe的src属性设为对一个长http短连接和长连接的请求服务器端就能源源不断地往客户端输入数据。
    优点:消息即时到达不发无用请求。
    缺点:服务器维护一个长http短连接和长连接会增加开销
  2. Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示
    优点:实现真正的即时通信,而不是伪即时
    缺点:客户端必须安装Flash插件;非HTTP协议,无法自动穿越防火墙
}

现打算开发一款app就大概功能来講,可能会包括 阅读板块分享板块,了解到大多的手机应用都基于http和服务端通信(而本人之前是在游戏服务端领域工作都是基于tcp长http短連接和长连接),所以想问就这样一款app而言: 1. 是所有通讯都用短http短连接和长连接,还是长http短连接和长连接还是两者皆有?最好能举几個典型应用的例子 2. 假如说是用短http短连接和长连接反向通知是不是一般都依靠长轮询? 3. 假如说有可能会加入聊天这样的实时性要求高的功能,是否一般都长http短连接和长连接通信

}

我要回帖

更多关于 http短连接和长连接 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信