2013-11-27 9 views
3

XMPP 작동 방식을 배우려하고 이해하려고합니다.node-xmpp-bosh를 사용하여 다른 컴퓨터의 xmpp 서버로 메시지 전달

제가 알고 있듯이 node-xmpp-bosh은 연결 관리자입니다. 연결 관리자는 완전한 xmpp 서버가 아니지만 일종의 프록시처럼 동작하며 xmpp 요청을 전용 xmpp 서버에 전달합니다. 이것은 전용 xmpp 서버가 연결을 처리 할 때 일반적으로 수행해야하는 부하를 줄여줍니다. 비록 이것이 결과적으로 어떻게 절감되는지, 또는 연결을 처리하는 데 오버 헤드가 발생하는 이유는 확실하지 않습니다.

나는 연결할 수있는 OpenFire xmpp 서버와 함께 제공되었지만 이것은 웹 응용 프로그램과 다른 도메인에 있습니다. XSS 문제를 해결하기 위해 node-xmpp-bosh를 프록시로 사용하기로 결정했습니다. 그러면 이전 브라우저에서 BOSH 폴백 (fallback)을 사용하여 웹 소켓을 사용할 수도 있습니다.

클라이언트 응용 프로그램에서 Strophe.js library을 사용하여 실제 메시지를 보내려고합니다.

요청을 실제 xmpp 서버로 전달하도록 node-xmpp-bosh를 구성하려면 어떻게해야합니까? 이 문서는 매우 명확하지 않으므로 연결 관리자를 호스팅하는 동일한 컴퓨터의 xmpp 서버로만 요청을 전달한다고 가정합니다. 또한 연결 관리자를 사용하기 위해 Strophe를 다르게 구성해야합니까, 아니면 단순히 연결 관리자에게 요청을 보내면됩니까? 사전

답변

1

연결 관리자는이 연결 요청을 전달 곳 클라이언트에서 원래 요청이 지시에

많은 감사합니다. 사용자 이름이 [email protected]이면 connectIon 관리자는 jabber.org의 XMPP 서버로 전달합니다.

4

node-xmpp-bosh의 기본 동작은 DNS를 사용하여 jabber id에서 도메인을 검색하는 것입니다.

사용자 지정 조회 서비스를 제공하여이 설정을 재정의 할 수 있습니다. 아래 예제에서 조회 서비스는 항상 10.10.7.245에 연결됩니다.

var server = nxb.start_bosh({ 
    lookup_service: MyLookupService, 
    logging: "TRACE", 
}) ; 

function MyLookupService(port, stream) 
{ 
    console.log("connecting") ; 
    this.connect = function(socket) { 
     var self = this ; 

     socket.connect(5222, "10.10.7.245", function(e) { 
      console.log("connected:", e) ; 
      self.emit("connect",e) ; 
     }) ; 

     socket.once("error", function(e) { 
      console.log("error connecting:", e) ; 
      self.emit("error",e) ; 
     }) ; 
    } ; 
} 

이것은 어디에도 설명되어 있지 않은 것처럼 보입니다.하지만 그렇게하는 방법입니다.