2013-06-21 4 views
1

Я хотел бы написать инструмент командной строки, который получает уведомления из API каналов Google App Engine. Это кажется довольно простым благодаря открытым JavaScripts VM, таким как v8 и js. Одна из проблем этого подхода состоит в том, что эти виртуальные машины не предоставляют стандартные объекты js, такие как window и document, к которым относится API-интерфейс канала. Таким образом, запуск такого кода дает вам ошибки window/document/.. not found.Контейнер без окон для API API канала Google App Engine

Там, кажется, два способа обойти это препятствие:

  1. Чтобы написать легкий заголовок в JavaScript, чтобы эмулировать поведение необходимых объектов.
  2. Чтобы отредактировать javascript Google (/ _ah/channel/jsapi) и устранить ссылки на такие объекты.

Кто-нибудь знает, существуют ли существующие реализации этих подходов или знают о лучшей идее? Кроме того, есть ли какая-то чистая, несжатая версия JavaScript-кода API-интерфейса канала API?

ответ

1

Вы не можете редактировать скрипт, используемый/_ah/channel/jsapi - он используется только тогда, когда канал работает против сервера приложений dev. При запуске на производстве этот сценарий перенаправляется на https://talkgadget.google.com/talkgadget/channel.js

Итак, вы остаетесь с эмулированием необходимых объектов или просто с помощью скрытого окна браузера. Я бы выбрал последнее, так как думаю, что эмуляция всех вызовов DOM будет очень сложной очень быстро.

+1

Да, это то, на чем я остановился. Теперь я использую Phantomjs (http://phantomjs.org), который обертывает Webkit способом, который может быть связан как библиотека. Другим вариантом было бы использовать XMPP API с одним пользователем вместо использования каналов. – er0

+1

Недостатком API XMPP является то, что для него потребуется учетная запись gmail или другая учетная запись XMPP. Дополнительным осложнением является то, что я не уверен, что новые учетные записи gmail (которые предположительно поддерживают Hangouts) будут больше интегрироваться с App Engine XMPP. Я не исследовал, что случилось с федерацией чата XMPP gmail с момента отправки Hangouts. –

+0

Я считаю, что федерация больше не работает. Не так ли, что вы можете использовать несколько jids с одним пользователем? Что-то вроде [email protected]/0, [email protected]/1 и т. Д. Мне не нужно присутствие, только обмен сообщениями. – er0