我们有一个浏览器应用程序 (SaaS),我们希望在互联网连接或服务器连接丢失的情况下通知用户。Gmail 做得非常好,当我拔下互联网电缆或禁用网络流量时,它立即说无法访问服务器并让我倒计时重试。
实现这样的事情的最佳方法是什么?我是否希望客户端浏览器每秒向应用程序服务器发出 AJAX 请求,或者有一个单独的服务器只报告“活动”。可扩展性将成为未来的一个问题。
我们有一个浏览器应用程序 (SaaS),我们希望在互联网连接或服务器连接丢失的情况下通知用户。Gmail 做得非常好,当我拔下互联网电缆或禁用网络流量时,它立即说无法访问服务器并让我倒计时重试。
实现这样的事情的最佳方法是什么?我是否希望客户端浏览器每秒向应用程序服务器发出 AJAX 请求,或者有一个单独的服务器只报告“活动”。可扩展性将成为未来的一个问题。
由于 GMail 已经每隔几秒钟检查一次新电子邮件,并且更频繁地检查聊天信息,因此它无需单独的请求就可以判断连接是否断开。如果您不使用 Ajax 进行其他类型的持续更新,那么是的,您只需让服务器回复某种“活动”信号即可。但是请注意,由于 Ajax 跨域限制,您不能使用单独的服务器。
随着服务器向客户端报告(通过 Comet 推送),您必须为每个客户端维护一个打开的连接。如果您有大量客户,这可能会非常昂贵。正如您所提到的,可扩展性可能是一个问题。另一种选择是轮询。您可以让它每隔 5-10 秒左右轮询一次,而不是每秒执行一次。
您可以查看的其他内容是Web Sockets(作为 HTML 5 的一部分开发),但我不确定它是否得到广泛支持(AFAIK 只有 Chrome 支持它)。