我跑ejabberd和殭屍Erlang編寫/ exmpp。我連接到這個bot一些jabber客戶端。我如何捕捉客戶端斷開連接?Ejabberd抓客戶端斷開
0
A
回答
2
你的意思是抓什麼? 用於調試add?DEBUG in ejabberd_sm:close_session。 用於跟蹤ejabberd_c2s上的dbg:終止和相同的ejabberd_sm:close_session。 對於應用程序調用訂閱sm_remove_connection_hook。 也許實現你自己的鉤子並使用自定義的一個?
1
我真的不知道如果我理解你是正確的,但是如果你有權力讓客戶端向機器人發送指示狀態,當用戶離線時,服務器會發送斷開連接的通知給機器人。
你可以在RFC 3921 找到一些文件這裏有一個litle摘錄。
5.1.4。針對存在
用戶可以發送針對存在於另一實體(即, 存在節與a「到」屬性,其值是 其他實體的JID,並用無「type」屬性或「型'屬性 ,其值「不可用」)。有三種可能的情況:
- ...
- 如果用戶發送指示存在,是不是在 「既」 後具有用戶與訂閱類型「從」或名冊實體發送初始的存在和發送不可用存在 廣播,用戶的服務器必須路線或之前交付的 完整的XML是存在節到entityv(...);然而,如果用戶發送定向呈現的可用 資源變得不可用,則用戶的服務器必須向該實體廣播該不可用的 呈現(如果用戶還沒有發送指示 不可用呈現給該實體)。
- ...
希望這有助於。
0
我想你嘗試檢查時,用戶關閉C2S連接,而不是檢查時用戶發送脫機節,您可以編輯和定製ejabberd_c2s.erl用於這一目的。在ejabber_c2s裏面,處理disconnect的函數是terminate/3(line#1425),你可以很容易地找到客戶端的jabber id。
相關問題
- 1. SecurityNegotiationException斷開域客戶端
- 2. 客戶端立即斷開
- 3. SignalR:客戶端斷開
- 4. 客戶端斷開連接
- 5. 斷開node-xmpp客戶端
- 6. TCP客戶端斷開
- 7. 客戶端從其他客戶端收到消息時斷開
- 8. 斷開客戶
- 9. XMPP客戶端與服務器ejabberd
- 10. Websocket客戶端斷開連接websocket4net
- 11. Comet和NIO - 客戶端斷開
- 12. 從IHubContext斷開客戶端<THub>
- 13. bottle.py在客戶端斷開時掛起
- 14. 處理TCP客戶端斷開連接
- 15. VerneMQ插件強制斷開客戶端
- 16. 告訴HTTP客戶端是否斷開
- 17. 「客戶端斷開連接」HttpException
- 18. 登錄期間客戶端斷開
- 19. 斷開wcf客戶端的問題
- 20. PHPWebsocket客戶端立即斷開連接
- 21. 的客戶端會自動斷開
- 22. 文件下載和客戶端斷開?
- 23. 檢測客戶端與HttpListener斷開
- 24. 從ServerSocket正確斷開客戶端(telnet)
- 25. 客戶端連接/斷開qjsonrpc事件
- 26. J2SSH ssh客戶端斷開頻繁
- 27. socket.id斷開連接客戶端?
- 28. TCP客戶端,請不要斷開
- 29. C#檢測TCP客戶端斷開
- 30. 當客戶端斷開所以C#
客戶端發送信息給機器人和機器人將消息發送到客戶端,然後客戶端進入離線,我怎麼能抓住這個時刻,知道客戶JID離線哪去了? – 0xAX