我正在做一个项目,该项目基于Springs MVC和带有Objectify的Google App Engine。
该应用程序的主要功能是:如果有人在数据存储中发布了新内容,则应将其自动发布到与其连接的浏览器,而无需刷新页面内容。基本上它是一个类似新闻的网站。发送到浏览器的数据是基于RESTAPI的JSON数据。
为了实现这个功能,我想到了使用以下方式:
-
AJAX:我想每隔2-3分钟使用AJAX调用来更新。但是这个解决方案似乎不可行,因为由于来自许多浏览器的许多AJAX调用,有许多数据存储读取操作。
-
Web套接字:这个概念对我来说很新鲜。我不知道这件事。一些pusher.com使用此技术来建立此类连接。
现在我需要你的建议,使用上面两个中的哪一个,或者我也对其他解决方案持开放态度。
谷歌应用程序引擎不支持网络套接字,但它支持类似的通道api,它也适用于旧浏览器。这可能不可行,这取决于你将连接的人数(每100个频道的成本为1c)。频道也有一些注意事项:https://developers.google.com/appengine/docs/python/channel/overview#Caveats
至于使用Ajax,如果您将响应缓存在memcache中,并每3分钟刷新一次密钥,那么除非启动新实例或密钥过期,否则您将不会进行任何数据存储读取。