2013-02-06 1 views
0

내 사이트에 Facebook 채팅을 구현하므로 JAXL을 사용하여 XMPP를 구현했습니다. 스크립트가 내가 원하는 메시지를 게시하는 것처럼 보이지만, 실행할 때마다 페이지가로드 및로드되고 멈추지 않습니다. 해당 사이트로 돌아가려면 브라우저에서 쿠키를 지워야합니다. 문제가 무엇인지 확신 할 수 없으며 로그에 오류가 표시되지 않습니다. 코드를 살펴 보겠습니다 : 감사합니다!JAXL XMPP 스크립트가 작동하지만로드가 중지되지 않습니다.

$client = new JAXL(array(
     'jid' => $user['facebookID']."@chat.facebook.com", 
     'fb_app_key' => "XXXX", 
     'fb_access_token' => $user['facebook_access_token'], 
     'force_tls' => true, 
     'auth_type' => 'X-FACEBOOK-PLATFORM', 
     'log_level' => JAXL_INFO, 
     'priv_dir' => "includes/lib/jaxl/tmp" 
    )); 

    $client->add_cb('on_auth_success', function() { 
     global $client; 
     _info("got on_auth_success cb, jid ".$client->full_jid->to_string()); 
     $client->set_status("available!", "dnd", 10); 

     $msg = new XMPPMsg(array('to'=>'[email protected]'), 'test message'); 
     $client->send($msg); 
    }); 

    $client->add_cb('on_auth_failure', function($reason) { 
     global $client; 
     $client->send_end_stream(); 
     _info("got on_auth_failure cb with reason $reason"); 
    }); 

    $client->add_cb('on_chat_message', function($stanza) { 
     global $client; 

     // echo back incoming message stanza 
     $stanza->to = $stanza->from; 
     $stanza->from = $client->full_jid->to_string(); 
     $client->send($stanza); 
    }); 

    $client->add_cb('on_disconnect', function() { 
     _info("got on_disconnect cb"); 
    }); 

    // 
    // finally start configured xmpp stream 
    // 
    $client->start(); 

    echo "done"; 

답변

1

로컬 jabber 서버로 코드를 테스트했습니다.

"$ client-> send_end_stream();"을 추가 할 때까지 동일한 결과가 나타납니다 (페이지로드가 유지됨). on_auth_success 함수의 끝에.

$client->add_cb('on_auth_success', function() { 
    global $client; 
    _info("got on_auth_success cb, jid ".$client->full_jid->to_string()); 
    $client->set_status("available!", "dnd", 10); 

    $msg = new XMPPMsg(array('to'=>'[email protected]'), 'test message'); 
    $client->send($msg); 

    // Close the connection 
    $client->send_end_stream(); 
}); 

이벤트가 발생하지 않는 동안 스크립트가 실행되는 것으로 보입니다. 나중에 페이지가 시간 초과됩니다.