【问题标题】:chat application on appengineappengine 上的聊天应用程序
【发布时间】:2011-01-31 05:54:30
【问题描述】:

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

  1. 那么还有什么其他方法可以 使用?轮询会导致不良用户 经验?意义将用户 必须等待一段时间才能 从服务器检索新消息?

  2. 什么是理想的轮询 间隔?

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

【问题讨论】:

  • 嗨,Akshay,您找到答案了吗?我也在找类似的东西。

标签: java google-app-engine chat polling server-push


【解决方案1】:

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

【讨论】:

  • XMPP 是一种即时通讯协议。这绝对是与其他用户互动的好方法。
【解决方案2】:

您不能只使用 XMPP 代替网站吗?这将是一个更好的方法。投票肯定不会很好地扩展,也绝对不会提供良好的用户体验。

XMPP with appengine

【讨论】:

  • GAE 上的 XMPP 非常出色。我目前正在使用它来为音乐应用程序实现管理控制台/管理警报界面。它速度极快,似乎并没有使用太多带宽。但是,免费配额 (code.google.com/appengine/docs/quotas.html#XMPP) 对于流行的 Web 应用程序来说可能不会太远。
  • @Robin:感谢您的回复。实际上我想实现一个像 omegle.com 这样的网站。这个网站不需要用户拥有用户名和密码。在 XMPP 中是否需要用户是注册用户用户才能使用xmpp。还需要其他成员在他的好友列表中才能与他聊天吗??
  • 2017年底关闭
【解决方案3】:

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

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

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

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 2011-11-04
      相关资源
      最近更新 更多