Javascript 用于Google应用程序引擎通道API客户端的无窗口容器

Javascript 用于Google应用程序引擎通道API客户端的无窗口容器,javascript,google-app-engine,v8,Javascript,Google App Engine,V8,我想写一个命令行工具,从谷歌应用程序引擎的通道API接收通知。由于v8和js等开放Java脚本虚拟机,这似乎非常简单。但是,这种方法的一个问题是,这些虚拟机不提供标准的js对象,例如通道API引用的window和document。因此,运行这样的代码将为您提供window/document/。。未找到错误 似乎有两种方法可以绕过这一障碍: 用javascript编写轻量级标头以模拟所需对象的行为 编辑Google的javascript(/_ah/channel/jsapi)并消除对此类对象的引用

我想写一个命令行工具,从谷歌应用程序引擎的通道API接收通知。由于v8和js等开放Java脚本虚拟机,这似乎非常简单。但是,这种方法的一个问题是,这些虚拟机不提供标准的js对象,例如通道API引用的
window
document
。因此,运行这样的代码将为您提供
window/document/。。未找到
错误

似乎有两种方法可以绕过这一障碍:

  • 用javascript编写轻量级标头以模拟所需对象的行为
  • 编辑Google的javascript(/_ah/channel/jsapi)并消除对此类对象的引用

  • 有人知道这些方法是否已有实现,或者知道更好的想法吗?此外,是否有可用的通道API客户端javascript代码的干净、未压缩版本?

    您不能编辑/_ah/channel/jsapi使用的脚本——它仅在通道针对开发应用服务器运行时使用。在生产环境中运行时,该脚本重定向到


    因此,您只需模拟所需的对象,或者只需使用隐藏的浏览器窗口。我会选择后者,因为我认为模拟所有DOM调用很快就会变得非常困难。

    您不能编辑/u ah/channel/jsapi使用的脚本——它只在通道针对开发应用服务器运行时使用。在生产环境中运行时,该脚本重定向到


    因此,您只需模拟所需的对象,或者只需使用隐藏的浏览器窗口。我会选择后者,因为我认为模拟所有DOM调用很快就会变得非常困难。

    是的,这就是我决定的。我现在使用的是Phantomjs(),它以一种可以链接为库的方式包装Webkit。另一个选择是与单个用户一起使用XMPP API,而不是使用通道。XMPP API的缺点是它需要用户拥有gmail或其他XMPP帐户。另一个复杂的问题是,我不确定较新的gmail帐户(可能启用了Hangout)是否还会与应用引擎XMPP联合。自从Hangouts发布以来,我还没有研究应用引擎XMPP gmail聊天联盟发生了什么。我相信这个联盟已经不起作用了。您不是可以对一个用户使用多个JID吗?差不多x@y.com/0, x@y.com/1等等。我不需要在场,只需要消息。是的,XMPP支持将消息发送到特定客户机的资源概念(所以foo@bar.com/adium无法将消息发送到foo@bar.com/是的,这是我决定的。我现在使用的是Phantomjs(),它以一种可以链接为库的方式包装Webkit。另一个选择是与单个用户一起使用XMPP API,而不是使用通道。XMPP API的缺点是它需要用户拥有gmail或其他XMPP帐户。另一个复杂的问题是,我不确定较新的gmail帐户(可能启用了Hangout)是否还会与应用引擎XMPP联合。自从Hangouts发布以来,我还没有研究应用引擎XMPP gmail聊天联盟发生了什么。我相信这个联盟已经不起作用了。您不是可以对一个用户使用多个JID吗?差不多x@y.com/0, x@y.com/1等等。我不需要在场,只需要消息。是的,XMPP支持将消息发送到特定客户机的资源概念(所以foo@bar.com/adium无法将消息发送到foo@bar.com/应用程序)