推技术/彗星可以伪造吗?

时间:2009-12-01 16:41:51

标签: comet reverse-ajax

客户有一个约会网站,并希望在其他用户访问他们的网页时向用户显示一个弹出窗口(一个很好的javascript叠加或一个新的浏览器窗口弹出窗口。我们很灵活。)。

我熟悉推送技术和Comet,但实现这一点非常具有挑战性,并且可能会给每天访问量超过100,000的服务器带来严重压力。

我想知道是否有办法伪装这个,也许是因为不准确到第二个。我无法想到任何方式。

这是一个经典的LAMP环境。

任何?

编辑:怎么样:在每隔几秒钟刷新的页面上放置一个iframe,并且在每个页面加载时,如果访问者已登录此个人资料页面,则会在数据库中检查。如果是这样,它会显示一条消息。消息将是可见的,但iframe的背景将与网站的背景融为一体并且不可见。如果消息淡入淡出,它看起来就像一个JS框“弹出”。

3 个答案:

答案 0 :(得分:1)

“伪造”彗星的唯一方法是通过某种形式的投票,这总是有可能的。 iframe,xhr或jsonp请求都是执行所述轮询的可能性。

你可能最好购买一个预建的彗星服务器(当然,我建议我帮助构建一个,WebSync for IIS/ASP.NET)。如果您担心负载,可以查看我们的On-Demand版本,我们将为您托管。

无论如何,WebSync(或者你可以查看的其他任何预先打包的产品)每天都会扩展到十万用户而没有太大问题,并且可能比轮询更有效,因为它只会打到你的数据库当新用户到达时,而不是每隔几秒;也就是说,如果你保持“检查新用户”查询足够简单,并且几秒钟的延迟就可以了,那么轮询的想法将是“更简单”的解决方案。

答案 1 :(得分:1)

如果您想真正推动,请查看http://en.wikipedia.org/wiki/Web_Sockets。这在浏览器中还没有得到广泛支持,但是已经有很多JavaScript和Flash库可以提供它。

或者更便宜的方法是在每个页面视图中记录数据库。 然后,当任何用户发出Web请求时,请检查数据库中是否有人自上次Web请求以来访问过他们的页面。 如果是,请弹出对话框。

如果用户只是将浏览器放在那里,则第二种方式不会弹出任何内容,但如果他们正在积极地与网站进行交互,那么它将很容易实现您的目标。

我将从第二个更简单的解决方案开始,这个解决方案非常容易实现。如果您的客户希望它更具互动性,您可以为各种选项提供解决方案和权衡/成本。

答案 2 :(得分:0)

收集用户网站每天获得的访问者数量的统计信息,然后对其进行细分,以便告知用户他的网站上有用户的百分比几率(即使实际上没有) ,基于他在可以接收弹出窗口的部分的时间范围内。我认为这是你在没有发送某种通知的情况下最接近的。

如果您想推送,可以执行此操作以最小化服务器使用情况: 当用户访问网站时,检查并确定收到通知的人是否在线并且能够得到通知,如果是,那么,然后执行所有推送操作,否则将其忘记。