Описание проблемы: сообщения канала не возвращаются в сценарий 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-широковещания с передачей идентификатора клиента"
и позже сообщение отправляется, но с комментарием:
между ними приходят эти запросы:
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 -
** .... текст сообщения ... на канал с ключом (широковещание): клиенты не подключены ***
Как работает канал / сообщение на более глубоком уровне? Потеряны ли сообщения, если ни один клиент не подключен или они были получены вновь подключенными клиентами?
Если по какой-то причине я создам канал с таким же именем, он будет разрушать недоставленные сообщения, которые он имеет внутри?