PHP を使用して、XMPP ベースのチャット サーバーにメッセージを送信したいと考えています。私は JAXL を使用しています。これは、純粋な PHP サーバー ベースのチャットに最適な (限られた) オプションのようです。
ただし、メッセージを送信するどころか、まだ接続を確立していません。問題が私のコード、私のサーバー (共有サーバーですが、Cpanel と非常に便利なホストを備えています)、または私の設定にある場合、問題を解決するのに苦労しています。
GTalk に接続するために使用しているコードは次のとおりです。
$client = new JAXL(array(
'jid' => 'name@gmail.com',
'pass' => 'password',
'host'=> 'talk.google.com',
'port'=> 5222,
'domain'=> 'gmail.com', //unsure if this is the right setting.
'force_tls' => true,
'auth_type' => @$argv[3] ? $argv[3] : 'PLAIN',
));
//
// required XEP's
//
$client->require_xep(array(
'0199' // XMPP Ping
));
//
// add necessary event callbacks here
//
$client->add_cb('on_auth_success', function() {
global $client;
_info("got on_auth_success cb, jid ".$client->full_jid->to_string());
// fetch roster list
$client->get_roster();
// fetch vcard
$client->get_vcard();
// set status
$client->set_status("available!", "dnd", 10);
});
$client->add_cb('on_connect_error', function() {
echo 'Connect Error';
});
$client->add_cb('on_auth_failure', function() {
echo 'Auth Error';
});
$client->add_cb('on_auth_success', function() {
global $client;
echo 'connected';
$client->send_chat_msg('test2@domain.com', 'webtest');
$client->shutdown();
});
//
// finally start configured xmpp stream
//
$client->start(array(
'--with-debug-shell' => true,
'--with-unix-sock' => true
));
echo "done\n";
(ブラウザーから) php をトリガーすると、サーバーが動かなくなります。(「完了」メッセージはなく、ブラウザからのタイムアウトまで常にロードされます)
サーバーログが表示されます。
strict mode enabled, adding exception handlers. Set 'strict'=>TRUE inside JAXL config to disable this[0m
error handler called with 8, Undefined index: priv_dir,
そして、たくさん。
unable to connect tcp://talk.google.com:5222 with error no: 110, error str: Connection timed out
そのため、次のいずれかについて助けていただければ幸いです。
- 私のコードに関する特定の問題
- 開始時の gtalk 接続設定に関する問題
- この問題を調査するための代替の推奨事項。
- または、JAXL の使用に成功した人々からの一般的なアドバイス。
ありがとう、トーマス・ローベル