2017-03-16 9 views
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分以上アイドル状態にしておくとセッションが終了します。誰でも私にこれを解決させる手助けはできますか?

+0

そうでない場合はTCP/IP接続が閉じられ得ます。 –

答えて

0

セッションを有効にするために、XMPPPingModule(XEP-0199:XMPP Ping)を使用できます。

例:あなたは間隔上のサーバにサーバ側またはピングにmod_ping有効にする必要があり

let xmppPing = XMPPPing() 
xmppPing?.respondsToQueries = true 
xmppPing?.activate(stream) 

let xmppAutoPing = XMPPAutoPing() 
xmppAutoPing?.pingInterval = (yourTimeInterval) * 60 
xmppAutoPing?.pingTimeout = pingTimeOutTime 
xmppAutoPing?.activate(stream) 
関連する問題