SSE和Ajax轮询之间的区别在浏览器中执行查询而不是js代码

时间:2015-10-18 05:44:12

标签: javascript ajax ajax-polling

我已经阅读了一些关于服务器端事件的内容,在我看来,SSE和Ajax Polling之间的最大区别在于,后者你应该在每次响应后自己查询服务器,而使用SSE浏览器为您做到这一点。这是对的吗?

就服务器处理而言,SSE和Ajax Polling之间几乎没有区别,只是在某种程度上格式化响应并包括Content-type: text/event-stream标题的细微差别?

2 个答案:

答案 0 :(得分:2)

正如Seabizkit基本上所说,一种方法轮询服务器(尽可能多地),另一种方法发送消息(当服务器决定发送消息时)。

如果每天对某些数据进行一次更新,您是否可以看到如果所有客户端每分钟检查一次,或者服务器向所有已订阅该事件的所有客户发送消息会有什么不同?

在你的问题中你会问这是否正确:'SSE和Ajax Polling之间的最大区别在于,后者你应该在每次响应后自己查询服务器,而使用SSE时,浏览器会为你做这件事'。对我来说,这意味着你基本上已经问过浏览器是否正在为你做请求。

Ajax Polling要求提供数据 - 因此您可以定时检查它是否已更改等(类似于网页请求)。

SSE仅在发生更改时向所有想要了解更改的人发送消息。

每次回复后轮询都不会查询,它会根据您的需要随时查询(如果您愿意,每秒10次,100,1000,无论您认为合适)。 当事情发生时发生事件,然后通知订户(希望只有一次)。

想象一下,如果我想知道我的包裹递送司机是否会在接下来的30分钟内出现。 我可以每分钟拨打一次电话然后问 - 如果我愿意的话,我可以整天做这件事,或者司机可以打电话给我,让我知道他们在30分钟的路程之内。

您在对Seabizkit的评论中表示,客户端会发起通信。不,不。它为服务器上可用的事件添加了事件处理程序。之后的通信是服务器向客户端发送消息,无论是5秒后,5分钟后,还是每秒50次 - 客户端没有再次请求,它已订阅该事件并且每次都会收到通知火了。

请记住,这是一般性解释 - 不是技术性解释,因为您的问题在询问两者之间的区别时是相当开放的。

答案 1 :(得分:0)

在浏览器的背景下......

不同之处在于:一次民意调查,另一次民意调查(*)。

<强>轮询;在浏览器端启动。

提出请求......收到回复......做点什么。 (通常更改UI)

  • 投票很昂贵(相对于你正在做的事情!)。
  • 与在浏览器上处理服务器更改相比,轮询更容易设置。

服务器端事件/更改;在服务器上启动。

如何通知浏览器?

  • 开箱即用的浏览器无法响应服务端更改。 基本上浏览器不知道服务器上发生了什么。

你可以自己处理这个问题。

幸运的是诸如SignalR http://signalr.net/

之类的图书馆

可以用来简化这一点。 但与使用民意调查的简单页面相比,复杂性仍然很高。

它要求您处理“客户端”之间的套接字连接。

(*)=少量盐,技术上没有正确措辞。

如果这不能回答您的问题,或者您想了解更多信息。