簡體   English   中英

確定XMPP用戶是否在線

[英]Determine if an XMPP user is online or not

我正在使用xmpppy庫來編寫可以與用戶聊天的XMPP客戶端。 它有自己的XMPP用戶帳戶,需要知道給定用戶是否在線。 但是,如何執行此操作的文檔有點稀疏。 你會推薦什么?

到目前為止,我看到的唯一解決方案是在XMPP服務器啟動之前啟動一個守護程序並監視發出的所有在線消息 - 如果用戶發送了“我在線”,則稱該用戶在線-type消息但不是相應的“我正在注銷”消息。 但是,作為XMPP的新手,我認為會有更好的方法來做到這一點。

簡單的方法是支持“訂閱”狀態消息 - 這允許另一個用戶通過“訂閱”嘗試檢查您當前是否存在(如果他們還不知道)。 查看這個有用的入門指南 ,以及更多重要細節的標准 (特別是如果需要,保護您的隱私來自您不知道的用戶的訂閱請求)。

基本上有三種方法可以連接到XMPP服務器:作為客戶端(您已經完成),作為組件,以及作為另一個服務器。 服務器到服務器類型(s2s)只是一個聯合連接,非常類似於郵件服務器如何相互交換電子郵件。

亞歷克斯描述了客戶如何跟蹤存在。 XMPP要求我批准您可以接收我的狀態信息,反之亦然。 對於您的機器人,這意味着您可以跟蹤最終用戶接受您的狀態請求所需的在線用戶。 這也意味着您可以響應用戶的狀態請求,並隨時了解您的機器人是否已啟動。

最后一種方法是作為可信組件,只有在運行服務器時才有效。 即如果你試圖在jabber.org服務器上這樣做,你運氣不好,因為你沒有運行該服務器。 upsdie是你可以訪問XMPP服務器的內部,比如拉動每個在線人員的列表。 缺點是您的組件/機器人實現對於每個服務器實現都會有所不同。

您可能希望看到問題“Jabber bot - 如何獲得聯系人的可用性?” 如果我理解你的問題,我認為這與它有關。

當然,正如Alex指出的那樣,無論如何你需要訂閱用戶的存在 - 但你似乎已經理解了這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM