我正在使用Java中的Google App Engine发送XMPP消息。检测用户登录/注销xmpp谷歌应用引擎
我想知道是否有方法检查用户是否登录到系统或注销。所以,当用户登录时,我想向他发送一个欢迎聊天消息,当他注销时,我想通知我的服务器代码相同。
我已经尝试了API,但没有运气到目前为止。
我正在使用Java中的Google App Engine发送XMPP消息。检测用户登录/注销xmpp谷歌应用引擎
我想知道是否有方法检查用户是否登录到系统或注销。所以,当用户登录时,我想向他发送一个欢迎聊天消息,当他注销时,我想通知我的服务器代码相同。
我已经尝试了API,但没有运气到目前为止。
假设你指的是通过XMPP查询用户的存在,请记住,这将如果仅仅工作您的App Engine帐户授权该用户。如果你已经有这么多,查询存在(用户登录/注销)很简单(source)。
如果Google Talk用户已订阅应用(已接受邀请或已邀请应用聊天),则该应用可通过查找/_ah/xmpp/presence/available
的POST来发现用户的可用性。如果用户订购和使用,你可以向他们发送您的应用程序的存在和地位:
// In the handler for _ah/xmpp/presence/available
XMPPService xmppService = XMPPServiceFactory.getXMPPService();
Presence presence = xmppService.parsePresence(req);
// Split the XMPP address (e.g., [email protected])
// 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路径接收自动存在通知
/_ah/xmpp/presence/available/
表示用户是可用并提供用户的聊天状态。/_ah/xmpp/presence/unavailable/
表示用户为不可用。/_ah/xmpp/presence/probe/
请求用户的当前状态。举个例子,当用户莎莉日志中,你会得到一个POST请求/_ah/xmpp/presence/available/
您的服务器,然后必须处理。然后当sally注销时,您将收到一个单独的POST请求/_ah/xmpp/presence/unavailable/
。
我正在尝试这个。 GTalk说,当用户注销时,我是否会收到状态通知? – Jayesh 2012-01-27 13:57:59
@Joy我已经更新了我的答案,现在有意义吗? – 2012-01-27 14:07:16
如果用户的状态在所有IM客户端_上发生变化,您将收到状态通知。因此,如果用户通过gmail和他们的android手机登录,并且他们关闭了他们的gmail窗口,那么您将不会(必然会出现与功能相关的一些警告)获得状态通知。 – 2012-01-27 14:08:11