짧은 대답은 '둘 다'입니다.
XMPP는 실시간 채팅을 수행하기위한 일련의 응용 프로그램 프로토콜입니다 (및 그 문제에 대한 다른 많은 작업). 그런 다음 어떻게 든 네트워크를 통해 전송되어야하므로 전송 바인딩이 필요합니다. XMPP에 대한 세 가지 주요 전송 바인딩이 있습니다.
- TCP / IP는 장치의 기본 클라이언트와 함께 인터넷에서 일반적으로 사용하는 것입니다.
- HTTP (BOSH라고 함)는 브라우저에서 XMPP를 사용할 때 전통적으로 사용 된 것입니다 (브라우저의 자바 스크립트 앱에서는 TCP-IP를 사용할 수 없기 때문).
- Websockets는 최신 브라우저에서 XMPP를 수행 할 때 사용하는 것입니다.
따라서 브라우저에서 채팅 애플리케이션을 개발하는 경우 애플리케이션 프로토콜로 XMPP를 선택하고 웹 소켓 (최신 브라우저에서) 또는 BOSH (이전 브라우저에서)를 네트워크 전송으로 사용합니다. Stanza.io ( https://github.com/otalk/stanza.io ) 와 같은 Javascript 용 XMPP 라이브러리를 사용하는 경우 둘 다 지원하며 전송 계층이 아닌 'XMPP'에 대해 생각할 것입니다. 연결할 엔드 포인트를 지정해야 할 때 설정하는 것 외에는
(채팅에 '단지 웹 소켓'을 사용할 수 없습니다. XMPP없이 웹 소켓을 사용할 수 있지만 이것이 실제로 의미하는 것은 채팅을위한 자체 애플리케이션 레이어 프로토콜을 개발하고 있다는 것입니다. 유용한 속성 (보안, ID, 확장 성 등)이있는 문서를 작성하는 데 이미 사용 된 작업을 활용하고 대신 XMPP를 사용하여 기존 라이브러리와 서버가있는 작업을 활용함으로써 많은 시간과 골칫거리가됩니다.)