Как я могу отправлять сообщения клиентам без опроса? - PullRequest
1 голос
/ 03 октября 2010

Каждый пример для чатов GAE использует своего рода опрос. Однако, если мое приложение GAE содержит список клиентов (в хранилище данных, если это необходимо), возможно, я мог бы избежать опроса, отправив сообщение всем этим клиентам. Как мне этого добиться?

Ответы [ 3 ]

6 голосов
/ 03 октября 2010

Если вы говорите о HTTP, краткий ответ заключается в том, что GAE в настоящее время не поддерживает его.То, о чем я думаю, вы спрашиваете, иногда называется BOSH .Как только WebSockets станут более распространенными, они станут отличным решением этой проблемы.

А пока вы можете захотеть взглянуть на XMPP .Используя XMPP, вы можете избежать опроса.Google объявил о Channel API (еще не выпущен), который в основном предоставит вам те же функции, что и веб-сокеты.

2 голосов
/ 03 октября 2010

Вы, вероятно, видели несколько примеров чатов ...

Поскольку вы просто хотите отправить сообщение пользователям в вашем хранилище данных (Совет: IMProperty отлично подходит для хранения такихданные), это просто вопрос прямой отправки сообщения:

from google.appengine.api import xmpp
# `destination` is a list of JIDS
# `message` is a normal unicode string
xmpp.send_message(destination, message)

Вы можете найти отличный учебник по использованию XMPP Ника Джонсона здесь

0 голосов
/ 06 декабря 2010

Обратите внимание, что теперь вы можете использовать API канала App Engine для этого: http://code.google.com/appengine/docs/python/channel/

Вы можете создать канал для данного клиента, используя:

channel.create_channel(client_id)

Затем, когда вычтобы обновить этого клиента, отправьте сообщение:

channel.send_message(client_id, message)

В основном каждый клиент получит постоянное соединение, через которое вы можете передавать сообщения.

...