0
セッション再開のために私はxep-0198(XMPPフレームワークのストリーム管理)に従っています。 300秒間しか動作しません。ユーザーがチャットアプリを300秒以上開かないと、タイムアウト間隔を増やしても自動的に接続が失われます。セッションを再開する方法 - ejabberd
私はYMLファイルに次を作っ:ログイン認証後
xmppStreamManagement = XMPPStreamManagement(storage: XMPPStreamManagementMemoryStorage(), dispatchQueue: DispatchQueue.main)
xmppStreamManagement?.autoResume = true
xmppStreamManagement?.addDelegate(self, delegateQueue: DispatchQueue.main)
xmppStreamManagement?.activate(stream)
をアプリケーションにしながら、(スウィフト):コードで
listen:
-
port: 5222
module: ejabberd_c2s
resend_on_timeout: if_offline
stream_management: true
resume_timeout: 10000
max_resume_timeout: 10000
xmppStreamManagement?.enable(withResumption: true, maxTimeout: 10000)
func canResumeStream() -> Bool{
return true
}
func xmppStreamManagement(_ sender: XMPPStreamManagement!, wasEnabled enabled: DDXMLElement!){
print("enabled")
}
func xmppStreamManagement(_ sender: XMPPStreamManagement!, wasNotEnabled failed: DDXMLElement!){
print("not enabled")
}
func supportsStreamManagement() -> Bool{
return true
}
を私は次のことを得ましたサーバーからの結果:
<enabled xmlns="urn:xmpp:sm:3" resume="true" max="10000" id="g2gCbQAAABY1NzQ5MzQwOTgwNjk2OTY4NTcxMjE4aANiAAAF0WIACjagYRg="/>
しかし、私が5分以上アイドル状態にしておくとセッションが終了します。誰でも私にこれを解決させる手助けはできますか?
そうでない場合はTCP/IP接続が閉じられ得ます。 –