4

ページがリロードされた場合に新しい接続が作成されないように、セッションをアタッチしようとしています。

// ドキュメントの準備ができたら、jid.sid および除去 Cookie が設定されているかどうかを確認します。設定されている場合: conn.attach. それ以外の場合:

$(document).ready(function()
{
    var cookie_data = {
        jid: $.cookie('xmpp_jid'),
        sid: $.cookie('xmpp_sid'),
        rid: $.cookie('xmpp_rid')
    };

    if(cookie_data.jid && cookie_data.sid && cookie_data.rid)
    {
         console.log("Cookies exists");
         var conn = new Strophe.Connection('/xmpp-httpbind');
         conn.attach(cookie_data.jid, cookie_data.sid, cookie_data.rid,function(status){
             console.log(status);
         }); 
     }else{
         connect();
      }
});


function connect()
{
   var conn = new Strophe.Connection('/xmpp-httpbind');

   conn.connect('xxxxx','yyyyy',function(status)
   {
      if(status === Strophe.Status.CONNECTED)
      {
        var iq = $iq({type:'get'}).c('query',{xmlns:'jabber:iq:roster'});
        Chat.connection.sendIQ(iq,Chat.on_roster);
        Chat.connection.addHandler(Chat.handle_message,null, "message", "chat");
        Chat.connection.send($pres());

        $.cookie('xmpp_jid', conn.jid, {path: '/'});
        $.cookie('xmpp_sid', conn.sid, {path: '/'});
        $.cookie('xmpp_rid', conn.rid+1, {path: '/'});  
    }
    });
    Chat.connection = conn; 
}





var Chat = {
    connection: null
}

そう:

1) ページの読み込み、- Cookie が正常に作成されました - connect() にジャンプします - 接続が正常に作成されました

2) ページを再度読み込む - Cookie 値が存在します。conn.attachコールバックは次を返します。

Status-Code 8:         ATTACHED
then INVALID SID ERROR (404)
then Status-Code 7:    DISCONNECTING
then Status-Code 6:    DISCONNECTED

問題は「INVALID SID」エラーです。解決策はありますか?

4

0 に答える 0