我愿意在 App Engine 上实现一个聊天网站。但我发现 App Engine 不允许我使用服务器推送。(因为它会在 30 秒后终止响应)。
那么可以使用的其他方法是什么?轮询会导致糟糕的用户体验吗?这意味着用户是否必须等待一段时间才能从服务器检索新消息?
理想的轮询间隔是多少?
如果您使用非常小的轮询间隔,我的带宽会耗尽吗?我会遇到性能问题吗?
我愿意在 App Engine 上实现一个聊天网站。但我发现 App Engine 不允许我使用服务器推送。(因为它会在 30 秒后终止响应)。
那么可以使用的其他方法是什么?轮询会导致糟糕的用户体验吗?这意味着用户是否必须等待一段时间才能从服务器检索新消息?
理想的轮询间隔是多少?
如果您使用非常小的轮询间隔,我的带宽会耗尽吗?我会遇到性能问题吗?
这是一个非常古老的问题,但我一直在寻找类似的答案。我认为Channel API
(http://code.google.com/appengine/docs/java/channel/)更适合这项任务。据我了解,XMPP 可以很好地与应用程序交互,但不能与其他用户交互。Channel API 通过 HttpRequest 实现推送通知。我刚刚在这里找到了一个聊天室的例子:https ://bitbucket.org/keakon/channelchat
你不能只使用 XMPP 而不是网站吗?这将是一个更好的方法。轮询肯定不会很好地扩展,并且肯定不会提供良好的用户体验。
我听说有人通过保持连接(即不发送任何响应)直到它死亡然后重新建立它来解决这个问题。30秒虽然不算多。
如果这样做,它仍然会比每 30 秒轮询一次更能响应用户。
关于带宽使用:根据有效负载,“典型”HTTP 请求的范围从几百字节到几千字节不等,尤其是使用 cookie。
假设平均大小为每 30 秒 5kB(悲观),那么每 24 小时总计约为 14 MB。也许您可以通过在 cookie 中设置路径来减小大小,这样它们就不会因这些连接而被发送。也许您不需要每 30 秒再次发送整个有效载荷。
是的,channel api 是最好的解决方案,使用 gwt 更好
http://www.dev-articles.com/article/Google-App-Engine-sending-messages-with-XMPP-393002