2012-11-29 2 views
0

XMPH 세션을 통해 XMPP 세션을 사전 바인딩하고 rid/sid/jid를 세션에 연결하기 위해 strophe 클라이언트에 전달하려고합니다. 여기XMPHP를 사용하여 BOSH 서비스에 연결 한 후 fulljid가 비어 있습니다.

접속 코드 :

$conn = new CIRCUIT_BOSH('server.com', 7070, $username, $pass, $resource, 'server.com', $printlog=true, $loglevel=XMPPHP_Log::LEVEL_VERBOSE); 
$conn->autoSubscribe(); 

try{ 
    $conn->connect('http://xmpp.server.com/http-bind', 1, true); 
    $log->lwrite('Connected!'); 
}catch(XMPPHP_Exception $e){ 
    die($e->getMessage()); 
} 

나는 제거 및 SID 만 $의 CONN 객체의 fulljid가 비어 유지하고 내가 세션 내의 Openfire 관리 콘솔을 시작 볼 수 없습니다를 얻고있다.

주어진 자원을 사용하고 jid/rid/sid를 strophe로 전달하여 수동으로 jid를 만들면 첨부 된 상태가되어 클라이언트에서 BOSH IP로 호출이 표시되지만 여전히 표시되지 않습니다. 세션과 나는 연결을 사용할 수 없습니다.

좌향 선회 클라이언트 코드 : 준비 문서에

를 호출 :

var sid = $.cookie('sid'); 
var rid = $.cookie('rid'); 
var jid = $.cookie('jid'); 
    $(document).trigger('attach', { 
     sid: sid, 
     rid: rid, 
     jid: jid, 
    }); 

$(document).bind('attach', function (ev, data) { 

    var conn = new Strophe.Connection(
     "http://xmpp.server.com/http-bind"); 

    conn.attach(data.jid, data.sid, data.rid, function (status) { 
     if (status === Strophe.Status.CONNECTED) { 
      $(document).trigger('connected'); 
     } else if (status === Strophe.Status.DISCONNECTED) { 
      $(document).trigger('disconnected'); 
     } else if (status === Strophe.Status.ATTACHED){ 
      $(document).trigger('attached'); 
     } 
    }); 

    Object.connection = conn; 

}); 

나는 문제가 제대로 세션을 생성하지 않는 XMPPHP 측에서 시작 생각합니다. '연결됨'이 트리거되었지만 '연결됨'상태가 아니며 '연결됨'상태가 전송 되야합니까? 내가 무엇이 누락 되었습니까?

+1

세션에 연결할 때 ATTACHED 상태 만 반환됩니다. xmlOutput 및 xmlInput 함수를 제공하여 보내고받는 내용을 확인할 수 있습니다. conn.xmlOutput과 같은 것 = function (body) {console.log (body); } – brimil01

+0

감사합니다. 나는이 동작이 예상대로 일어 났을 것이라고 생각했습니다. –

답변

0

좋아, 해결, 나는 XMPPHP lib 디렉토리에서 openfire 서버에 전혀 만들지 않았어, 그래서 좋은 XMPP 클래스에 대한 간단한 테스트를 작성하고 세션을 만들었습니다, 그리고 XMPP_BOSH 클래스 하나를 관리하지 않았습니다. 그런 다음 여기에서 문제 보고서를 보았습니다. http://code.google.com/p/xmpphp/issues/detail?id=47 comment no.9이 (가) 작동하여 processUntil() 함수를 XMLStream.php에서 BOSH.php로 복사하여 문제를 해결했지만 왜 이것이 작동하는지 알 수 없습니다. 그런 다음 Openfire 서버의 사용자를 위해 설정된 일부 암호와 중복되는 버그가 있음을 발견했습니다. 이 암호에는 ! # % ^ 문자가 포함되어 있습니다. XMPP_BOSH가 암호를 전송하거나 변경하여 XMPP_BOSH가 인증 실패를 당했기 때문에 어떤 이유로 인해 예외가 발생했습니다. 비밀번호를 변경하면 문제가 해결되었으며 이제 Strophe.js 라이브러리로 생성 된 세션 XMPPHP에 연결할 수 있습니다.