Xmpp 대 Websocket [닫기]


88

거의 실시간 채팅이 가능한 웹 사이트를 개발하려고합니다. xmpp 또는 websocket 프로토콜을 사용하여 구현할 수 있다는 것을 알고 있습니다. xmpp 프로토콜이 1999 년에 개발되었다는 것도 알고 있고, 요즘에는 성숙해야한다고 생각합니다. 반면에 웹 소켓 프로토콜은 2011 년에 개발되었습니다.

  1. xmpp가 실시간 대화를 잘 처리한다면 websocket의 필요성은 무엇 이었습니까?
  2. 두 프로토콜의 주요 차이점은 무엇입니까?
  3. 그리고 그중 하나를 다른 것보다 언제 선택해야합니까?

1
나는 최근에 같은 문제를 우연히 만났고, 내 대답은 WebSockets로가는 것이 었습니다. Node.JS는 매우 인기있는 언어가되고 있으며 권리에 따라 그럴 것입니다. XMPP는 괜찮습니다. 그러나 제 생각에는이 오래된 기술을 사용하기로 결정함으로써 앞으로 나아가는 것을 제한하고 있습니다. 그러나 Node는 까다로운 짐승이므로 JavaScript와 다르게 접근해야합니다. 충분히 인내심이 있다면 Node로가는 것이 좋을 것입니다.이뿐만 아니라 다른 영역으로 더 쉽게 확장 할 수 있습니다.
JustSteveKing 2014 년

7
XMPP는 확장 가능한 메시징 및 현재 상태 프로토콜이고 Websocket은 포트 80을 통해 전이중 통신을 제공하는 프로토콜입니다. Apple과 Orange를 비교합니다.
흐름

16
@Flow : 나는 당신의 의견으로는 사과와 오렌지를 비교할 수 있습니다. 하지만 제가 묻고있는 것은 실시간 채팅 기능을 제공하는 웹 사이트를 개발할 때 무엇을 선택해야하는지입니다.
Khafaga 2014 년

1
@JustSteveKing 대부분의 작업은 이미 XMPP에서 수행되지만 이러한 작업은 node.js에서 관리해야합니다. 이것은 바퀴를 다시 발명하는 것과 같습니다.
Shahid Karimi 2015

답변:


133

짧은 대답은 '둘 다'입니다.

XMPP는 실시간 채팅을 수행하기위한 일련의 응용 프로그램 프로토콜입니다 (및 그 문제에 대한 다른 많은 작업). 그런 다음 어떻게 든 네트워크를 통해 전송되어야하므로 전송 바인딩이 필요합니다. XMPP에 대한 세 가지 주요 전송 바인딩이 있습니다.

  1. TCP / IP는 장치의 기본 클라이언트와 함께 인터넷에서 일반적으로 사용하는 것입니다.
  2. HTTP (BOSH라고 함)는 브라우저에서 XMPP를 사용할 때 전통적으로 사용 된 것입니다 (브라우저의 자바 스크립트 앱에서는 TCP-IP를 사용할 수 없기 때문).
  3. Websockets는 최신 브라우저에서 XMPP를 수행 할 때 사용하는 것입니다.

따라서 브라우저에서 채팅 애플리케이션을 개발하는 경우 애플리케이션 프로토콜로 XMPP를 선택하고 웹 소켓 (최신 브라우저에서) 또는 BOSH (이전 브라우저에서)를 네트워크 전송으로 사용합니다. Stanza.io ( https://github.com/otalk/stanza.io ) 와 같은 Javascript 용 XMPP 라이브러리를 사용하는 경우 둘 다 지원하며 전송 계층이 아닌 'XMPP'에 대해 생각할 것입니다. 연결할 엔드 포인트를 지정해야 할 때 설정하는 것 외에는

(채팅에 '단지 웹 소켓'을 사용할 수 없습니다. XMPP없이 웹 소켓을 사용할 수 있지만 이것이 실제로 의미하는 것은 채팅을위한 자체 애플리케이션 레이어 프로토콜을 개발하고 있다는 것입니다. 유용한 속성 (보안, ID, 확장 성 등)이있는 문서를 작성하는 데 이미 사용 된 작업을 활용하고 대신 XMPP를 사용하여 기존 라이브러리와 서버가있는 작업을 활용함으로써 많은 시간과 골칫거리가됩니다.)


1
안녕하세요, 질문이 오래되었습니다. 궁금합니다. 바인딩 전송이 socket.io/strophe.js와 같고 xmpp가 (openfire / Ejabbered)와 같다는 의미입니까?

1
아니요, 이름을 지정하는 것은 라이브러리 대 서버입니다.
Kev

계층 (전송, 애플리케이션 계층 포함)에 대한 자세한 내용은 다음과 같습니다. en.wikipedia.org/wiki/OSI_model
Karina Klinkevičiūtė

2
Kev의 좋은 대답이지만 1> TCP는 계층 4-전송 계층에 속하고 HTTP와 Websocket은 모두 계층 7-응용 프로그램 계층에 속한다는 점을 지적 할 가치가 있습니다.
Gob00st

실제로 @ Gob00st-여기에서도 혼란 스럽습니다. Kev의이 답변은 "둘 다"라고 말합니다. " (최신 브라우저에서) 웹 소켓을 네트워크 전송으로 사용하기 때문입니다 " . 하지만 어떻게 우리가 실제로 사실 웹 소켓이 (HTTP XMPP 등 등)과 그 화해 않는 응용 프로그램 ( 하지 전송) 즉 OSI 계층 7 프로토콜? XMPP가 최신 브라우저에서 WebSockets "위에"이동하는 이유는 무엇입니까?
Amelio Vazquez-Reina
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.