0

私は自分のサイトに Facebook チャットを実装しているので、XMPP を実装するために JAXL を使用しました。スクリプトは私が望んでいたメッセージを投稿しているようですが、それを実行するたびに、ページはロードとロードを続け、停止することはありません. そのサイトに戻るには、ブラウザで Cookie を消去する必要があります。ログにエラーが表示されていません。コードを見てください: ありがとう!

$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'=>'-XXXX@chat.facebook.com'), '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";
4

1 に答える 1

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'=>'-XXXX@chat.facebook.com'), 'test message');
    $client->send($msg);

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

イベントが発生していない間、スクリプトが停止しているようです。その後、ページがタイムアウトします。

于 2013-03-21T08:44:45.003 に答える