Определить логин / выход пользователя из xmpp - PullRequest
0 голосов
/ 27 января 2012

Я использую Google App Engine на Java для отправки сообщений XMPP.

Я хотел бы знать, есть ли способ проверить, вошел ли пользователь в систему или вышел из системы.Поэтому, когда пользователь входит в систему, я хотел бы отправить ему welcome сообщение чата, а когда он выходит из системы, я хотел бы сообщить свой код сервера о том же самом.

Я пробовал API присутствия, но пока не получилось.

1 Ответ

0 голосов
/ 27 января 2012

Предполагая, что вы имеете в виду запрос присутствия пользователя через XMPP, имейте в виду, что это будет только , если ваша учетная запись App Engine авторизована по этот пользователь. Если вы уже достигли этого уровня, запрос наличия (пользователь вошел / вышел) довольно прост ( source ).

Если пользователь Google Talk подписался на приложение (принял приглашение или пригласил приложение в чат), приложение может обнаружить доступность пользователя, выполнив запрос POST на /_ah/xmpp/presence/available. Если пользователь подписан и доступен, вы можете отправить ему информацию о присутствии и статусе вашего приложения:

// In the handler for _ah/xmpp/presence/available
XMPPService xmppService = XMPPServiceFactory.getXMPPService();
Presence presence = xmppService.parsePresence(req);

// Split the XMPP address (e.g., user@gmail.com)
// from the resource (e.g., gmail.CD6EBC4A)
String from = presence.getFromJid().getId().split("/")[0];

// Mirror the contact's presence back to them
xmppService.sendPresence(from, PresenceType.AVAILABLE, presence.getPresenceShow(), presence.getStatus());

Чтобы уточнить , ваше приложение получает автоматические уведомления о присутствии по следующим путям POST URL:

  • POSTs к /_ah/xmpp/presence/available/ сигнализируют, что пользователь доступен , и предоставляют статус чата пользователя.
  • POSTs к /_ah/xmpp/presence/unavailable/ сигнализирует, что пользователь недоступен .
  • POST для /_ah/xmpp/presence/probe/ запроса текущего присутствия пользователя.

Например, когда пользователь sally входит в систему, вы получите POST-запрос к /_ah/xmpp/presence/available/, который ваш сервер затем должен будет обработать. Затем, когда sally выйдет из системы, вы получите отдельный POST-запрос к /_ah/xmpp/presence/unavailable/.

...