Описание проблемы: сообщения канала не возвращаются в ajax-скрипт. Изначально сообщения доставляются на сторону клиента, но проблема возникает, когда я устанавливаю больший таймаут в js:
goog.appengine.Socket.POLLING_TIMEOUT_MS = 5000; //опрос каждые 5 секунд
Я добавил очень простой код Python, чтобы проверить, работает ли Channel API в моем приложении Google App Engine.
index:
token = channel.create_channel(CHANNEL_NAME)
channel.send_message(CHANNEL_NAME, message)
#token is passed to template
additional_view:
#is another view, trigger manually from browser after index
from django.utils import simplejson
channel.send_message(CHANNEL_NAME, simplejson.dumps(data))
На стороне клиента у меня есть обычный js с кодом onMessage.
Проблема в том, что никакие сообщения не возвращаются на клиентские запросы. Все они приходят пустыми к опросу ajax (как видно из Firebug). В журнале приложений я вижу, что канал создан:
"Создание токена канала channel-2382918168-broadcast с широковещательной передачей идентификатора клиента" и позже отправляется сообщение, но с комментарием:
между ними приходят эти запросы:
INFO 2011-08-03 14:33:32,000 dev_appserver.py:4248] "POST /_ah/channel/connected/ HTTP/1.1" 404 -
INFO 2011-08-03 14:33:33,780 dev_appserver.py:4248] "POST /_ah/channel/disconnected/ HTTP/1.1" 404 -
** ....текст сообщения...на канал с ключом (трансляция): клиенты не подключены***
Как канал/сообщение функционирует на более глубоком уровне? Сообщения теряются, если ни один клиент не подключен или они извлекаются вновь подключившимися клиентами? Если по какой-то причине я создам канал с тем же именем, он уничтожит недоставленные сообщения, которые есть внутри?