我正在使用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