博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Long-Polling, Websockets, SSE(Server-Sent Event), WebRTC 之间的区别
阅读量:5817 次
发布时间:2019-06-18

本文共 2211 字,大约阅读时间需要 7 分钟。

Long-Polling, Websockets, SSE(Server-Sent Event), WebRTC 之间的区别

作者:

在下面的示例中,客户端指的是浏览器,服务器指的是网站服务器主机。

为了更好的理解这些知识点,你应该简单了解典型的http网站是如何工作的。

普通的http:

  1. 客户端从服务器端请求网页
  2. 服务器作出相应的反应
  3. 服务器返回相应到客户端

AJAX Polling:

  1. 客户端使用普通的http方式向服务器端请求网页
  2. 客户端执行网页中的JavaScript轮询脚本,定期循环的向服务器发送请求(例如每5秒发送一次请求),获取信息
  3. 服务器对每次请求作出响应,并返回相应信息,就像正常的http请求一样

AJAX Long-Polling:

  1. 客户端使用普通的http方式向服务器端请求网页
  2. 客户端执行网页中的JavaScript脚本,向服务器发送数据、请求信息
  3. 服务器并不是立即就对客户端的请求作出响应,而是等待有效的更新
  4. 当信息是有效的更新时,服务器才会把数据推送给客户端
  5. 当客户端接收到服务器的通知时,立即会发送一个新的请求,进入到下一次的轮询

HTML5 Server Sent Events (SSE) / EventSource:

  1. 客户端使用普通的http方式向服务器端请求网页
  2. 客户端执行网页中的JavaScript脚本,与服务器之间建立了一个连接
  3. 当服务器端有有效的更新时,会发送一个事件到客户端
    • 服务器到客户端数据的实时推送,大多数内容是你需要的
    • 你需要一台可以做的服务器
    • 不允许跨域的连接
    • 如果你觉得这些还不够,想要了解更多,可以参考下面的文件和手册
      Using server-sent events
      https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events
      Server-Sent Events
      http://html5doctor.com/server-sent-events
      Stream Updates with Server-Sent Events
      http://www.html5rocks.com/en/tutorials/eventsource/basics/
      Tutorial: JSF 2 and HTML5 Server Sent Events
      http://jaxenter.com/tutorial-jsf-2-and-html5-server-sent-events-42932.html

HTML5 Websockets:

  1. 客户端使用普通的http方式向服务器端请求网页
  2. 客户端执行网页中的JavaScript脚本,与服务器之间建立了一个连接
  3. 服务器和客户端之间,可以双向的发送有效数据到对方
    • 服务器可以实时的发送数据到客户端,同时客户端也可以实时的发送数据到服务器
    • 你需要一台可以做的服务器
    • 使用 WebSockets 允许跨域的建立连接
    • 它同样支持第三方的websocket主机服务器,例如或者。这样你只需要关心客户端的实现 ,降低了开发难度。
    • 如果你觉得这些还不够,想要了解更多,可以参考下面的文件和手册
      An Introduction To WebSockets
      http://www.developerfusion.com/article/143158/an-introduction-to-websockets/
      Writing WebSocket client applications
      https://developer.mozilla.org/en-US/docs/WebSockets/Writing_WebSocket_client_applications
      Start Using HTML5 WebSockets Today
      http://code.tutsplus.com/tutorials/start-using-html5-websockets-today--net-13270

WebRTC:

WebRTC是一种点对点类型的传输方式,它支持多种传输协议,如:UDP、TCP甚至是抽象层的协议。设计它时同时考虑到了允许使用可靠和不可靠的两种方式传输数据。这种技术一般应用在传输数据量较大的内容,比如音、视频等流媒体的传输。

Comet:

Comet是一种用于web的推送技术,能使服务器实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,和。如果你想了解更多,可以参考或者

Event Loop
Event Loop是一个程序结构,用于等待和发送消息和事件。
长轮询
长轮询是在打开一条连接以后保持,等待服务器推送来数据再关闭的方式。
iframe流

iframe流方式是在页面中插入一个隐藏的iframe,利用其src属性在服务器和客户端之间创建一条长链接,服务器向iframe传输数据(通常是HTML,内有负责插入信息的javascript),来实时更新页面。

iframe流方式的优点是浏览器兼容好,Google公司在一些产品中使用了iframe流,如Google Talk。

转载于:https://www.cnblogs.com/jxr041100/p/8415993.html

你可能感兴趣的文章
基于Bootstrap的jQuery开关按钮插件
查看>>
如何删除PHP数组中的元素,并且索引重排(unset,array_splice)?
查看>>
Python数据分析:手写数字识别初步
查看>>
烂泥:学习centos之快速搭建LNMP环境
查看>>
jsp获取地址栏上的参数和获取controller中通过ModelAndView绑定的属性值
查看>>
PMP考试心得
查看>>
vxworks的tornado安装后遇到的sigproc_init:cannot create wait_sig thread......问题的解决方法!...
查看>>
Berkeley DB的增删改查的两种实现方式
查看>>
dfdf
查看>>
[转载] 信息系统项目管理师视频教程——26 业务流程管理
查看>>
在Windows Server 2003系统中为Web服务器申请证书
查看>>
一步步构建大型网站架构
查看>>
显示列表中的xenserver的总内存,可用内存,可用内存比【易读版】
查看>>
华为交换机板卡端口型号对照
查看>>
TX Text Control文字处理教程(13)实现拖放操作
查看>>
python学习-装饰器
查看>>
Visual Studio 20周年,我和VS不得不说的故事(内含福利)
查看>>
『中级篇』docker之CI/CD持续集成—GitLab CI服务器(71)
查看>>
部署Svn+Apache服务器
查看>>
通过读取用户和密码文件自动创建用户脚本
查看>>