gpt4 book ai didi

ajax - 轮询、Comet、WebSockets 等

转载 作者:行者123 更新时间:2023-12-04 07:59:16 27 4
gpt4 key购买 nike

我需要在 Web 应用程序中构建一些非常激进的“自动刷新”功能。它有点像照片库,图像存储在 AmazonS3 上,但有关图像的数据存储在我们自己的数据库中。我玩过轮询服务器并发送 ajax 调用以获取更新的数据。我真的很担心使用这种方法对服务器的负载。有时,页面需要每 15 到 30 秒更新一次。

我一直在阅读 Comet,但我并不认为这个“黑客”是个好主意。 WebSockets 可能会有所帮助,但我担心它们太新且不受支持。那么,话虽如此,是否有人对构建一个需要经常刷新并有可能拥有非常高用户群的系统的方法有任何建议?

我不同意只是在问题上投入更多的服务器,但也不相信这是最好的方法。在其他人建议之前,我不能做 Flex,因为 Web 应用程序必须在 iPad 上运行。

最佳答案

WebSockets 似乎是一个相当不错的选择。在 Firefox 4 和 Opera 11 中禁用 WebSockets 可能是暂时的,因为工作组已经开始发布解决这些问题的草案。此外,web-socket-js即使在禁用了 native WebSockets 的浏览器上,Flash 回退仍然有效。另外值得注意的是,iOS 4.2 具有原生 WebSockets。因此,通过原生 WebSockets + 回退,几乎所有地方都支持 WebSockets。

如果您使用 WebSockets,您可能还需要考虑推送更新而不是让客户端轮询。这将有助于防止客户端意外对服务器进行 DDOS 攻击。客户端的延迟只会增加,此时您可以开始在服务器端添加更多资源。

如果服务器端 Javascript 没有问题,那么您可以查看 Socket.IO这是一个 Nodejs WebSockets 框架,它选择客户端和服务器自动支持的最佳传输(首选 native WebSockets,然后是 WebSockets 回退,然后是各种长轮询选项)。它还使服务器和客户端代码看起来非常相似,因为它包含一个客户端库。 Socket.IO 目前似乎有相当多的思想共享。

如果您以 Ruby 为中心,您可能想查看 em-websockets . Socket.IO 和 em-websockets 都是基于事件的服务器,它允许非常高的客户端数量,尤其是在延迟而不是带宽最重要的情况下。

关于ajax - 轮询、Comet、WebSockets 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4855992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com