8

我可以知道这两种方法有什么不同吗?可以通俗的解释一下吗?

4

2 回答 2

6

Comet是一种将实时数据推送到网络浏览器的技术——因此页面可以不断更新。有关更多详细信息,请参阅有关 Comet的此页面。

Pub/Sub(或 Publish/Subscribe)与 Comet没有什么不同,它是一种告诉 Comet 服务器您想要接收什么数据(订阅)并将数据发送给其他订阅者(发布)的方式。许多 Comet 服务器实现了发布/订阅模型。

StreamHub Comet Server中的真实示例:

订阅:我想接收有关 Google 的新闻:

hub.subscribe("/news/google", function(sTopic, oData) { alert("Received news article about Google: " + oData.Article});

发布:我想提供一些关于 Google 的新闻:

hub.publish("/news/google", "{'Title':'Google Expanding Access To Wave Soon, First Impressions','Article':'According to Google, included in this group of early testers will be some of the businesses using Google Apps. In anticipation of this wider release, ...'}");

任何订阅主题“/news/google”的人都会收到我在上面发布的文章——这就是 pub/sub 的工作方式。

于 2009-09-01T23:53:09.523 回答
4

发布-订阅是一种将发布者与订阅者分离的异步通信方式。发布者不是将消息发送给特定的订阅者,而是发布关于某个主题的消息。订阅者订阅该主题。一个给定的主题可以有许多发布者和许多订阅者。

例如,在交易系统中,Google 股票的交易可能会发布在“Trade.GOOG”主题上。然后,订阅者可以通过收听必要的主题来收听特定股票的交易。

Comet是一种基于 Web 的技术,用于使用长期 HTTP 连接进行服务器推送。

想象一个扑克网站。您的浏览器可以与服务器建立连接,这实际上会一直挂起,直到轮到您做某事(加注、跟注等),而不是您每隔几秒钟点击一次刷新以查看您是否需要做某事。轮询是另一种解决方案。

它们的相似之处在于它们本质上是一种异步通信方式,但在其他方面却不同。

于 2009-09-01T13:12:13.163 回答