Web端即时通讯技术简介

HTTP协议

HTTP 协议构建于 TCP/IP 协议之上,是一个应用层协议,默认端口号是 80
HTTP 是无连接无状态的

详细介绍:https://hit-alibaba.github.io/interview/basic/network/HTTP.html
HTTP 2.0:https://juejin.cn/post/6844903984524705800

WebSocket协议

WebSocket协议是HTML5开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。

  • WebSocket可以在浏览器里使用
  • 支持双向通信
  • 使用很简单

详细介绍:https://www.cnblogs.com/chyingp/p/websocket-deep-in.html

Web端即时通讯技术

即时通讯技术简单的说就是实现这样一种功能:服务器端可以即时地将数据的更新或变化反应到客户端,例如消息即时推送等功能都是通过这种技术实现的。

但是在Web中,由于浏览器的限制,实现即时通讯需要借助一些方法。这种限制出现的主要原因是,一般的Web通信都是浏览器先发送请求到服务器,服务器再进行响应完成数据的现实更新。

Web端即时通讯技术的四种实现:

  • 短轮询
  • 长轮询(comet)
  • 长连接(SSE)
  • WebSocket

从兼容性角度考虑,短轮询>长轮询>长连接>WebSocket;
从性能方面考虑,WebSocket>长连接>长轮询>短轮询。

短轮询

短轮询的基本思路就是浏览器每隔一段时间向浏览器发送HTTP请求,服务器端在收到请求后,不论是否有数据更新,都直接进行响应。

这种方式实现的即时通信,本质上还是浏览器发送请求,服务器接受请求的一个过程,通过让客户端不断的进行请求,使得客户端能够模拟实时地收到服务器端的数据的变化。

长轮询(comet)

长轮询通过客户端和服务端的配合,达到主动权在客户端,同时也能保证数据的实时性;长轮询本质上也是轮询,只不过对普通的轮询做了优化处理,服务端在没有数据的时候并不是马上返回数据,会保持住请求,等待服务端有数据,或者一直没有数据超时处理,然后一直循环下去。

此外,HTTP流也可以实现comet。它在页面整个生命周期内只使用一个HTTP连接,具体使用方法即页面向浏览器发送一个请求,而服务器保持tcp连接打开,然后不断向浏览器发送数据。

长连接(SSE)

严格地说,HTTP 协议无法做到服务器主动推送信息。但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息(streaming)。也就是说,发送的不是一次性的数据包,而是一个数据流,会连续不断地发送过来。这时,客户端不会关闭连接,会一直等着服务器发过来的新的数据流,视频播放就是这样的例子。本质上,这种通信就是以流信息的方式,完成一次用时很长的下载。SSE 就是利用这种机制,使用流信息向浏览器推送信息。它基于 HTTP 协议,目前除了 IE/Edge,其他浏览器都支持。

服务器发送事件(Server Sent Events)API用于创建到服务器的单向连接,服务器通过这个连接可以发送任意数量的数据。服务器响应的MIME类型是text/event-stream,而且浏览器中的JS API能够解析格式输出。SSE支持短轮询、长轮询、HTTP流,而且能在断开连接时自动确定合适重新连接。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值