0
我使用下面的代碼連接到XMPP服務器(蟒蛇+ xmppy):Jabber機器人 - 如何獲得狀態更新?
c = xmpp.Client("localhost", debug=[])
c.connect(("127.0.0.1", 5222))
c.auth("test","test")
c.sendInitPresence()
c.send(xmpp.Presence(to="[email protected]", typ='subscribe'))
time.sleep(1000)
這只是正常,管理員獲取用戶的存在更新和通訊錄中的「測試」的用戶顯示爲線上。如果我在該腳本上按ctrl + c(當它在最後睡覺時),則會發生問題,因此它會被終止。問題在於admin用戶沒有從該腳本獲取狀態更新。
我還應該提到admin用戶自動接受訂閱請求。
我的問題是:管理員用戶如何檢測到測試用戶脫機。並且更改上面的腳本不是一種選擇,因爲任何人都可以編寫這個腳本並在我的xmpp服務器上構建一個程序。
任何想法爲什麼管理員沒有收到狀態更新或如何檢測用戶'測試'下線是受歡迎的。
感謝
嗨。我可以控制XMPP服務器,它是openfire,如果使用上述腳本,它不會發送當前更新。它檢測到用戶已經離線,因爲如果我列出所有用戶,「測試」用戶被標記爲離線。沒有更新。我想'admin'用戶應該收到狀態更新,因爲上面的腳本將它添加到'測試'名單中 - 並且由於管理員自動接受訂閱。所以我不知道發生了什麼事情,'管理員'沒有得到離線狀態更新,但是openfire檢測到用戶「測試」已經離線。 – eleanor 2012-02-22 23:23:37
然後,它聽起來像它可能是一個Openfire的錯誤。 XMPP規範指出,如果客戶端斷開連接,服務器必須生成不可用狀態:http://xmpp.org/rfcs/rfc6121.html#presence-unavailable-outbound – MattJ 2012-02-25 14:29:56