我想编写一个命令行工具来接收来自 Google App Engine 的 Channel API 的通知。由于开放的 JavaScript VM(例如 v8 和 js),这似乎非常简单。不过,这种方法的一个问题是,这些虚拟机不提供 channel API 引用的标准 js 对象,例如 window
和 document
。因此,运行此类代码会给您带来 window/document/.. not found
错误。
似乎有两种方法可以绕过这个障碍:
- 用 JavaScript 编写轻量级 header 来模拟所需对象的行为。
- 编辑 Google 的 javascript (/_ah/channel/jsapi) 并消除对此类对象的引用。
有谁知道这些方法是否有现有的实现,或者知道更好的想法?此外,是否有干净、未压缩版本的 channel API 客户端 JavaScript 代码可用?
最佳答案
您无法编辑/_ah/channel/jsapi 使用的脚本 - 它仅在 channel 针对开发应用服务器运行时使用。在生产中运行时,该脚本重定向到 https://talkgadget.google.com/talkgadget/channel.js
因此,您只能模拟所需的对象,或者仅使用隐藏的浏览器窗口。我会选择后者,因为我认为模拟所有 DOM 调用很快就会变得非常困难。
关于javascript - 用于 Google App Engine channel API 客户端的无窗口容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17237989/