Предварительная привязка Openfire http с помощью JAXL
Я пытаюсь реализовать converse.js в своем проекте для использования чата Openfire и привязываю пользователя с помощью JAXL. Он отлично работает на моем облачном (VPS) сервере. Когда я пытаюсь опубликовать тот же код на моем клиентском сервере, он не работает. и получить ту же проблему, когда выполнить то же самое с моего локального хоста. не работает означает, что запрос предварительной привязки остается (в ожидании) некоторое время и заканчивается 500 внутренней ошибкой сервера.
мы проверили конфигурацию сервера. вроде бы нормально. Может кто-нибудь предложить мне что-то, как отладить этот?
вот мой код конфигурации jaxl.
$client = new JAXL(array(
'jid'=>$un,
'pass'=>$pwd,
'bosh_url' => 'http://xx.xx.xx.xx/http-bind',
'log_path' => __DIR__ . '/logs',
'log_level' => JAXL_INFO,
'strict' => false
));
заранее спасибо
-josan
ОБНОВИТЬ
вот мой журнал jaxl с моего клиентского сервера.
1.jaxl:180 - 2014-11-05 10:47:47 - dns srv lookup for iz25pkf9c7hz
2.jaxl:189 - 2014-11-05 10:47:47 - including bosh xep
3.jaxl_fsm:61 - 2014-11-05 10:47:47 - calling state handler 'setup' for incoming event 'start_cb'
4.jaxl_fsm:71 - 2014-11-05 10:47:47 - current state 'wait_for_stream_features'
5.xep_0206:109 - 2014-11-05 10:47:47 - posting to http://182.92.156.24/http-bind body
6.<body xmlns="http://jabber.org/protocol/httpbind" content="text/xml; charset=utf-8"
to="iz25pkf9c7hz" route="xmpp:iz25pkf9c7hz:5222" secure="true" xml:lang="en"
xmpp:version="1.0" xmlns:xmpp="urn:xmpp:xbosh" hold="1" wait="30" rid="2280"
ver="1.10" from="bala101@iz25pkf9c7hz">
</body>
7.xep_0206:132 - 2014-11-05 10:47:47 - recving for 2280
8.xep_0206:132 - 2014-11-05 10:47:48 - recving for 2280
9.xep_0206:132 - 2014-11-05 10:47:48 - recving for 2280
10.xep_0206:132 - 2014-11-05 10:47:48 - recving for 2280
.
.
.
.
58854.xep_0206:132 - 2014-11-05 10:47:48 - recving for 2280
.
.
(Its just kept on adding for 5 or 3 mins)
1 ответ
Наконец-то мы нашли решение этой проблемы.
Как я уже упоминал в своем комментарии, проблема была вызвана версиями PHP
В жакле
#135 $changed = curl_multi_select($this->mch, 0.1);
#137 if($changed == 0 && $running == 0) {
https://github.com/jaxl/JAXL/blob/v3.x/xep/xep_0206.php
Используемая там функция curl_multi_select() в строке № 135 возвращает (-1) вместо (0) в качестве ответа, когда версии PHP выше, чем 5.3.18.
Так что я изменил #137 следующим образом
#137 if(($changed == 0 || $changed == -1) && $running == 0) {
Эта вещь решает мою проблему.
ссылка https://bugs.php.net/bug.php?id=63411
Примечание: для версий PHP Больше, чем 5.3.x Выполните проверку миграции перед использованием JAXL в вашем проекте. Приведенная ниже ссылка, содержащая скрипт оболочки для поиска неудобств
http://blog.waja.info/2013/09/15/migrating-from-php-5-dot-3-x-to-5-dot-4-x-and-finding-problematic-application-code/
Надеюсь, это когда-нибудь поможет.