1

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

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

我想知道是否有办法伪造这一点,也许是不准确到第二个。我实在想不出任何办法。

这是一个经典的 LAMP 环境。

任何人?

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

4

3 回答 3

1

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

您最好购买一台预先构建的 Comet 服务器(当然,我会推荐我帮助构建的WebSync for IIS/ASP.NET)。如果您担心负载,您可以查看我们的按需版本,我们将为您托管它。

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

于 2009-12-03T14:39:16.653 回答
1

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

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

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

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

于 2010-04-05T01:19:11.803 回答
0

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

如果你想要推送,你可以这样做来最小化服务器使用:当用户访问一个网站时,检查并查看接收通知的人是否在线并且能够被通知,如果是,那么做所有推送的东西,否则算了。

于 2009-12-01T16:45:49.827 回答