【发布时间】:2011-06-10 21:49:13
【问题描述】:
如何在非 JavaScript 客户端上为 COMET 使用 Google 应用引擎 Channel API。
我将用python或任何其他语言编写客户端,并且可以从客户端执行HTTP或Socks。
我应该如何进行,我想知道 JavaScript 客户端支持的情况?
JS 是使用长轮询还是与 GAE 服务器对话。
【问题讨论】:
标签: python google-app-engine channel-api
如何在非 JavaScript 客户端上为 COMET 使用 Google 应用引擎 Channel API。
我将用python或任何其他语言编写客户端,并且可以从客户端执行HTTP或Socks。
我应该如何进行,我想知道 JavaScript 客户端支持的情况?
JS 是使用长轮询还是与 GAE 服务器对话。
【问题讨论】:
标签: python google-app-engine channel-api
我对 javascript Channel API 客户端进行了逆向工程并创建了一个python library。 随意使用它。我还没有在任何实际应用程序上对其进行过测试,但据我所知,它似乎运行良好。
【讨论】:
异步消息传递是通过在页面中嵌入隐藏的 iframe 来完成的,然后使用 Google Closure javascript 库中的 goog.net.CrossPageChannel 类将消息从 iframe 发送到主机页面。
Closure CrosspageChannel 代码记录在这里:http://closure-library.googlecode.com/svn/!svn/bc/4/trunk/closure/goog/docs/class_goog_net_xpc_CrossPageChannel.html
您可以轻松地对将从 iframe 传递到主机页面的消息进行反向工程。这些可能不会改变(尽管现在没有绝对的保证)。
我希望在本季度为 Channel API 开源客户端库,但以上内容应该可以帮助您入门。
【讨论】:
Google App Engine 尚未发布任何有关 Channel API 背后协议的文档,因此没有开发 Javascript 语言之外的库(这里是 Gwt 的包装器)。
如果您有兴趣,可以为这些功能请求加注星标:
4189 - Enable Java clients (not just javascript) to use the Channel API
4226 - Channel API for native client apps?
4206 - Create a native C# client library for the Channel API
【讨论】:
酷,...我在 app engine talk og Google I/O 上找到了“channel api”的 X-Ray 视图 http://www.youtube.com/watch?v=oMXe-xK0BWA
它使用隐藏的 iframe http://en.wikipedia.org/wiki/Comet_(programming)#Hidden_iframe
现在我将尝试在 python 中模仿客户端。
【讨论】:
如果你想从非 JS 客户端进行双向更新,可以使用XMPP。
【讨论】: