OfflineMessagetrategy:
離線消息的處理策略類。
1.靜態成員變量type 用來設置消息的處理類型,主要包括:
打回
丟棄
存儲,在超限情況下打回
存儲,在超限情況下丟棄
2.靜態成員變量quota 標識最大所能存儲的message總和大小默認為100k。
3.支持OfflineMessageListener事件監聽器,只要實現此接口並加入到監聽器列表,則在消息被打回或存儲時可撲捉到相應消息。
4.所有離線消息都存儲在表ofoffline中。
OfflineMessageStore:
用來具體處理離線消息的類。
1.用addMessage(Message message)來存儲一條消息。
2.用getMessages(String username,boolean delete)來提供指定用戶的所有離線消息。delete參數則是指定提取后是否要從數據庫中刪除。
3.用deleteMessages(String username)來刪除某個用戶所有的離線消息。
4.此類實現了UserEventListener接口,當用戶被刪除時掉用deleteMessage()來刪除此用戶所有離線消息。
離線消息的存儲時機:
1.routingFailed()在進行消息路由失敗的情況下。比如目的用戶不在線。
2.由ConnectonManager轉發過來的消息找不到路由或無法處理。
離線消息的提取時機:
1.用戶狀態變為可用,session被初始化時。比如用戶上線。
2.用戶發送了特定的IQ消息,要求遞送自己發送的離線消息。
3.用戶的session權限級別發生了變化。
