2013-06-21 137 views
1

我想編寫一個命令行工具,接收來自Google App Engine通道API的通知。這似乎是非常簡單的感謝開放的JavaScripts虛擬機,如v8和js。但是,這種方法存在的一個問題是,這些虛擬機不提供通道API引用的標準js對象,如windowdocument。因此運行此類代碼會導致出現window/document/.. not found錯誤。Google App Engine通道API客戶端的無窗口容器

似乎有被規避了這一障礙的方法有兩種:

  1. 要使用JavaScript編寫的輕量級頭效仿所需對象的行爲。
  2. 編輯Google的javascript(/ _ah/channel/jsapi)並消除對這些對象的引用。

有誰知道是否有這些方法的現有實現,或知道更好的想法?此外,是否有一個乾淨的未壓縮版本的渠道API客戶端JavaScript代碼可用?

回答

1

您無法編輯/ _ah/channel/jsapi使用的腳本 - 僅當頻道針對開發應用程序服務器運行時纔會使用。在生產環境中運行時,該腳本將重定向到https://talkgadget.google.com/talkgadget/channel.js

因此您只需模擬所需的對象,或者只使用隱藏的瀏覽器窗口。我會選擇後者,因爲我認爲模擬所有DOM調用會很快變得非常困難。

+1

是的,這就是我所定下的。我現在正在使用Phantomjs(http://phantomjs.org),它以一種可以作爲庫鏈接的方式封裝Webkit。另一種選擇是將XMPP API與單個用戶一起使用,而不是使用Channels。 – er0

+1

XMPP API的缺點是它需要用戶擁有一個gmail或其他XMPP賬戶。一個額外的複雜因素是,我不確定是否新的gmail帳戶(推測已啓用環聊)將與App Engine XMPP再次聯合。自從發佈環聊後,我還沒有研究過App Engine XMPP <-> Gmail聊天聯合會發生了什麼。 –

+0

我相信聯邦政府不再工作了。難道你不能用單個用戶使用多個jid嗎?像[email protected]/0,[email protected]/1等。我不需要存在,只需傳遞消息。 – er0

相關問題