ゆれくるコール開発日誌

ゆれくるコール、あめふるコール、つながるコールや緊急地震速報のことなど

jaxlをつかってCGIでxmppメッセージを送信する

phpxmppライブラリでフリーのものはいくつかあるんだけど、jaxlはNew BSD Lisenceだしイイ感じ。

 

jaxlのサイトに、簡単なメッセージ送信のサンプルはあるんだけど、これはcliで動かす場合のサンプル。そのままcgiで動かしてもうまく動かない、ハテ?

 

jaxlのサイトみたりとかググったりしてもあんまり情報ないし、うーむどうしたものか。。

なんてことやってるうちに、落としてきたソースコードにサンプルがついてることに気が付きました。

うーむ灯台下暗し。。

 

サンプルコードはappディレクトリ配下に格納されてます。

その中のpreFetchXMPP.phpが参考になりそう。

ヘッダに「Pre-fetch XMPP/Jabber data for webpage without using BOSH extension or Ajax requests」と書いてあります。

BOSHとかAjaxつかわないでxmppのデータを取ってきてwebページに表示するサンプルのようです。

このサンプルはvcard情報を取ってきて画面に表示していますが、vcard情報取得、画面表示の部分をメッセージ配信処理に置き換えればOK。

 

こんな感じ。

JAXLオブジェクト初期化の際に、modeをcliにしているのがポイントかな。

 

// initialize JAXL instance

$xmpp = new JAXL(array(

    'user'=>'xxxxx',

    'pass'=>'xxxxx',

    'domain'=>'xxx.xxx.xxx.xxx',

    'port'=>'5222',

    'logLevel'=>4,

    // Force CLI mode since this app runs from browser but we don't intend to use BOSH or Ajax

    'mode'=>'cli'

));

function postConnect($payload, $xmpp) {

    $xmpp->startStream();

}

function doAuth($mechanism, $xmpp) {

    $xmpp->auth('DIGEST-MD5');

}

function postAuth($payload, $xmpp) {

    //メッセージ配信

 $xmpp->sendMessage('xxxxx@xxx.xxx.xxx.xxx', 'test data from jaxl');

 $xmpp->shutdown();

}

// Register callbacks for required events

$xmpp->addPlugin('jaxl_post_connect', 'postConnect');

$xmpp->addPlugin('jaxl_get_auth_mech', 'doAuth');

$xmpp->addPlugin('jaxl_post_auth', 'postAuth');

 

// Fire start JAXL Core

$xmpp->startCore();

 

ところではてなブログって、ソースコードきれいに表示するにはどうしたらいいのかな?