代码之家  ›  专栏  ›  技术社区  ›  Laures

如何在没有轮询的情况下向客户端发送消息?

  •  1
  • Laures  · 技术社区  · 14 年前

    GAE聊天的每个例子都使用某种轮询。但是,如果我的GAE应用程序包含一个客户机列表(如果需要,在数据存储中),也许我可以通过向所有这些客户机发送消息来避免轮询。我怎样才能做到这一点?

    3 回复  |  直到 14 年前
        1
  •  6
  •   Robert Kluin    14 年前

    如果您谈论的是HTTP,那么简单的回答是GAE目前不支持它。我认为你所问的有时叫做 BOSH . 一次 WebSockets

    同时你可能想看看 XMPP Channel API (尚未发布)它将基本上为您提供与websockets相同的特性。

        2
  •  2
  •   Caio Romão    14 年前

    因为您只想向数据存储上的用户发送一条消息(提示: IMProperty

    from google.appengine.api import xmpp
    # `destination` is a list of JIDS
    # `message` is a normal unicode string
    xmpp.send_message(destination, message)
    

    您可以找到nickjohnson提供的关于使用XMPP的一个很好的教程 here

        3
  •  0
  •   Moishe Lettvin    14 年前

    请注意,您现在可以使用App Engine Channel API执行以下操作: http://code.google.com/appengine/docs/python/channel/

    可以使用以下方法为给定客户端创建通道:

    channel.create_channel(client_id)
    

    channel.send_message(client_id, message)
    

    基本上,每个客户机都将获得一个持久连接,您可以将消息推送到该连接上。