2014-10-30 1 views
4

내 프로젝트에서 Openfire 채팅을 사용하려면 converse.js를 구현하고 JAXL을 사용하여 사용자를 바인딩하는 중입니다. 내 클라우드 (VPS) 서버에서 제대로 작동합니다. 내 클라이언트 서버에 동일한 코드를 게시하려고 할 때 작동하지 않습니다. 내 localhost에서 동일한 문제를 실행할 때 같은 문제가 발생합니다. 작동하지 않음은 사전 바인딩 요청이 잠시 동안 (보류 중) 유지되고 500 내부 서버 오류로 종료됨을 의미합니다.JAXL을 통한 Openfire http 제본

우리는 서버 구성을 점검했습니다. 괜찮을 것 같습니다. 아무도 나를 디버깅하는 방법에 뭔가 제안 할 수 있습니까?

여기 내 jaxl 구성 코드입니다. 사전
-josan

UPDATE

에서

$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 
)); 

덕분에 여기 내 클라이언트 서버에서 내 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="[email protected]"> 
</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) 
+0

다른 호스트 사이에서 나는 차이점은 PHP 버전과 아파치 버전입니다. PHP v5.3.3/Apache/2.2.15 (CentOS)를 사용하는 작업 서버. 내 로컬 시스템에 PHP v5.4.7이 있습니다. 그래서 내 xampp를 1.7.4로 다운 그레이드했습니다 (PHPv5.3.5/Apache (2.2.17)). localhost에서 액세스하려고하면 200 OK로 content-length가 0 인 응답을 얻습니다. –

답변

2

마침내 우리는이 문제에 대한 해결책을 찾았습니다.
난 이미 내 댓글에서 언급 한 바와 같이 문제가

JAXL에서 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#L135

라인을 돌려주는 # 135 거기에 사용되는 curl_multi_select() 기능 (-1) 대신 PHP 버전이 5.3.18보다 높은 경우 (0)

그래서 다음과 같이 # 137을 변경했습니다.

#137 if(($changed == 0 || $changed == -1) && $running == 0) { 

이 문제는 내 문제를 해결합니다.

심판https://bugs.php.net/bug.php?id=63411

참고 : 5.3.x보다 큼 PHP 버전의 프로젝트에 - 더 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/

희망.

해피 코딩