当前位置: 首页 > 知识库问答 >
问题:

在什么情况下,AJAX长/短轮询比HTML5 WebSockets更好?

桂高昂
2023-03-14

我正在为朋友构建一个小型聊天应用程序,但不确定如何及时获取信息,而不是像强制刷新页面那样手动或简单。

共有1个答案

史骏祥
2023-03-14

WebSockets是 <罢工> 绝对是未来 现在。

长轮询是防止像AJAX那样为每个请求创建连接的一种肮脏的变通方法--但是长轮询是在WebSockets不存在的时候创建的。现在由于WebSockets,长轮询是 <罢工> 走开 不再。

WebRTC允许点对点通信

WebSockets-客户端服务器。创建到服务器的TCP连接,并在需要时保持打开。服务器或客户端可以轻松地关闭连接。客户端通过HTTP兼容的握手过程。如果成功,那么服务器和客户端可以随时双向交换数据。如果应用程序需要以两种方式进行频繁的数据交换,那么它是有效的。WebSockets确实有数据框架,包括屏蔽从客户机发送到服务器的每个消息,所以数据只是加密。支持图表(非常好)维基百科

WebRTC-peerpeer。传输来建立客户端之间的通信,并且是传输无关的,因此它可以使用UDP、TCP甚至更抽象的层。这通常用于诸如视频/音频流的大容量数据传输,其中可靠性是次要的,并且为了响应时间和至少一些数据传输,可以牺牲几个帧或质量进展的减少。双方(对等方)可以独立地相互推送数据。虽然它可以完全独立于任何集中服务器使用,但它仍然需要某种方式来交换endpoint数据,在大多数情况下,开发人员仍然使用集中服务器来“链接”对等点。这只需要交换建立连接所需的基本数据,之后就不需要集中服务器了。支持图表(中)维基百科

服务器发送的事件-客户端服务器。客户端与服务器建立持久和长期的连接。只有服务器可以向客户端发送数据。如果客户机想要将数据发送到服务器,则需要使用另一种技术/协议来这样做。该协议与HTTP兼容,并且在大多数服务器端平台中实现简单。这是一个较好的协议,可以用来代替长轮询。支持图表(好,IE除外)维基百科

人们经常关心网络套接字的安全性。事实是,它没有什么不同,甚至将WebSockets作为更好的选择。首先,使用AJAX,出现MITM的几率更高,因为每个请求都是一个新的TCP连接,它正在穿越internet基础设施。对于WebSockets,一旦连接了它,在两者之间进行拦截就更具挑战性了,当数据从客户端流到服务器时,还需要额外的帧掩蔽,以及额外的压缩,这需要更多的努力来探测数据。所有现代协议都支持HTTP和HTTPS(加密)。

请记住,WebSockets通常有一种非常不同的网络逻辑方法,更像实时游戏,而不像HTTP。

 类似资料:
  • 问题内容: 我正在为朋友构建一个小型聊天应用程序,但不确定如何及时获取信息,而这不像强制刷新页面那样手动或基本。 目前,我正在使用简单的AJAX来实现此功能,但是这样做的缺点是,在经过短计时器后会定期命中服务器。 在研究长/短轮询时,我遇到了HTML5 WebSockets。这 似乎 很容易实现,但是我不确定是否存在一些隐藏的缺点。例如,我认为WebSockets仅受某些浏览器支持。我应该知道We

  • 问题内容: 我最近在StackOverflow上问了一个有关我的功能的问题,人们建议我使用Ajax Long Polling。我花了几天的时间研究该主题,并尝试编写基本的长轮询代码,但是这些代码都没有起作用,而且我什么也做不了。 这是我的基本功能: 有人能够告诉我如何将其转变为基本的长轮询功能,或者甚至直接指向我需要到达的路径。很感谢任何形式的帮助。谢谢! 问题答案: 通常(即,当不使用长时间轮询

  • 问题内容: 我经营一个网站,用户可以在该网站上通过浏览器互相聊天(想想Facebook聊天)。处理现场互动的最佳方法是什么?(现在,我每30秒进行一次民意调查以更新在线用户和新收到的消息,而另一次民意调查则每秒在聊天页面上进行一次以获取新消息。) 我考虑过的事情: HTML5 Web套接字:未使用此功能,因为它不适用于所有浏览器(仅适用于chrome)。 Flash Sockets:没有使用它,因

  • 本文向大家介绍在什么情况下选择webpack?在什么情况下选择rollup?相关面试题,主要包含被问及在什么情况下选择webpack?在什么情况下选择rollup?时的应答技巧和注意事项,需要的朋友参考一下 非要一句话区分的话 如果是用,如果是用其实界限并不是特别明显。在某些特殊情况下可以互用

  • 我想测量和比较长轮询和WebSocket之间的服务器性能。我用ratchet(PHP websockets)构建了一个简单的PHP应用程序,它只在控制台中输出数据(指南:http://socketo.me/docs/hello-world)。长轮询应用程序也是PHP,只生成随机数并将其记录在控制台中(本文:如何实现基本的“长轮询”?)。 有没有办法在不使用数据库的情况下对这些应用程序进行公平的比较