2

我愿意在 App Engine 上实现一个聊天网站。但我发现 App Engine 不允许我使用服务器推送。(因为它会在 30 秒后终止响应)。

  1. 那么可以使用的其他方法是什么?轮询会导致糟糕的用户体验吗?这意味着用户是否必须等待一段时间才能从服务器检索新消息?

  2. 理想的轮询间隔是多少?

  3. 如果您使用非常小的轮询间隔,我的带宽会耗尽吗?我会遇到性能问题吗?

4

4 回答 4

2

这是一个非常古老的问题,但我一直在寻找类似的答案。我认为Channel APIhttp://code.google.com/appengine/docs/java/channel/)更适合这项任务。据我了解,XMPP 可以很好地与应用程序交互,但不能与其他用户交互。Channel API 通过 HttpRequest 实现推送通知。我刚刚在这里找到了一个聊天室的例子:https ://bitbucket.org/keakon/channelchat

于 2011-02-18T06:26:59.273 回答
1

你不能只使用 XMPP 而不是网站吗?这将是一个更好的方法。轮询肯定不会很好地扩展,并且肯定不会提供良好的用户体验。

带有应用引擎的 XMPP

于 2010-03-24T13:06:59.710 回答
0

我听说有人通过保持连接(即不发送任何响应)直到它死亡然后重新建立它来解决这个问题。30秒虽然不算多。

如果这样做,它仍然会比每 30 秒轮询一次更能响应用户。

关于带宽使用:根据有效负载,“典型”HTTP 请求的范围从几百字节到几千字节不等,尤其是使用 cookie。

假设平均大小为每 30 秒 5kB(悲观),那么每 24 小时总计约为 14 MB。也许您可以通过在 cookie 中设置路径来减小大小,这样它们就不会因这些连接而被发送。也许您不需要每 30 秒再次发送整个有效载荷。

于 2010-03-24T15:31:51.250 回答
0

是的,channel api 是最好的解决方案,使用 gwt 更好

http://www.dev-articles.com/article/Google-App-Engine-sending-messages-with-XMPP-393002

于 2011-04-15T08:50:56.693 回答