2014-10-24 1 views
43

나는 거의 실시간으로 채팅을하는 웹 사이트를 개발하려고합니다. xmpp 또는 websocket 프로토콜을 사용하여 구현할 수 있다는 것을 알고 있습니다. 나는 XMPP 프로토콜이 1999 년에 개발 된 것 또한 알고 있으며, 나는 그것이 다른 한편으로 CSTE 연구진은 현재 성숙해야한다 생각의 웹 소켓 프로토콜은 웹 소켓의 필요가 무엇인지 2011 년Xmpp 대 Websocket

  1. 에서 개발 된 XMPP 경우 실시간 대화를 잘 처리 했습니까?
  2. 2 개의 프로토콜 간의 주요 차이점은 무엇입니까?
  3. 언제 다른 쪽에서 하나를 선택해야합니까?
+1

나는 최근에 같은 문제에 빠져 들었다. 나의 대답은 WebSockets을위한 것이었다. Node.JS는 매우 대중적인 언어가되고 있으며 권한에 따라야합니다. XMPP는 괜찮습니다. 제 의견으로는이 구형 기술을 사용하기로 결정하면서 앞으로 나아갈 것입니다. 그러나 노드는 까다로운 동물이므로 JavaScript와는 다르게 접근해야합니다. 당신이 참을성이 있다면 나는 Node를 제안 할 것입니다. 단지 이것을 위해서가 아니라 다른 분야에서보다 쉽게 ​​확장 할 수있게 해줄 것입니다. – JustSteveKing

+6

XMPP는 Extensible Messaging and Presence Protocol이며 Websocket은 포트 80을 통해 전이중 통신을 제공하는 프로토콜입니다. 사과를 오렌지와 비교합니다. – Flow

+7

@Flow : 나는 당신의 의견으로 사과와 오렌지를 비교할 것입니다. 그러나 내가 묻는 것은 실시간 채팅 기능을 제공하는 웹 사이트를 개발할 때 선택해야하는 것입니다. – Khafaga

답변

83

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

XMPP는 실시간 채팅 (및 그 밖의 여러 가지 작업)을위한 응용 프로토콜 세트입니다. 그런 다음 네트워크를 통해 전송되어야하므로 전송 바인딩이 필요합니다. 세 가지 주요 교통 바인딩은 XMPP를위한 있습니다 -

  1. TCP/IP는, 하나는 일반적으로 장치의 기본 고객과 인터넷에서 사용하는 것 어느 쪽이 전통적으로 할 때 사용한 것입니다 (허튼 소리라고 함)
  2. HTTP, 브라우저에서 XMPP 사용 (브라우저의 Javascript 응용 프로그램에서는 TCP-IP를 사용할 수 없으므로)
  3. 최신 브라우저에서 XMPP를 수행 할 때 사용하는 웹 소켓입니다.

브라우저에서 채팅 응용 프로그램을 개발하는 경우 XMPP를 응용 프로그램 프로토콜로 선택하고 웹 소켓 (최신 브라우저) 또는 BOSH (이전 브라우저)를 네트워크 전송. Stanza.io (https://github.com/otalk/stanza.io)와 같은 Javascript 용 XMPP 라이브러리를 사용하는 경우 두 가지를 모두 지원하므로 전송 계층이 아닌 'XMPP'에 대해 생각할 것입니다. 설치 프로그램에서 다른 끝점 에 연결할 수 있습니다.

(채팅에는 '그냥 웹 소켓'을 사용할 수 없습니다. XMPP가없는 웹 소켓을 사용할 수는 있지만 실제로 채팅을위한 자신의 응용 프로그램 계층 프로토콜을 개발하고 있다는 것을 의미합니다. 이미 유용한 속성 (보안, 신원, 확장 성 등)을 작성하고 XMPP 대신 기존 라이브러리 및 서버가있는 작업을 활용하여 많은 시간과 두통을 줄여야합니다.

+1

안녕하세요, 미안 해요, 질문은 잠시 동안, 난 그냥 궁금해서, 바인딩 바인딩 의미 socket.io/strophe.js, 그리고 xmpp 같은 (openfire/Ejabbered)입니까? – John

+0

아니요, 라이브러리 대 서버라는 이름을 지정하고 있습니다. – Kev

+0

다음은 레이어 (전송, 응용 프로그램 레이어 포함)에 대한 것입니다. https://en.wikipedia.org/wiki/OSI_model –

9

기본적으로 서로 다른 두 가지를 비교하고 있습니다. XMPP는 응용 프로토콜이며 WebSockets는 전송 프로토콜입니다.

XMPP를 사용하면 많은 시간을 절약 할 수 있다고 생각합니다. 그러나, 당신은 최상의 스위트 방식으로 기능을 구현할 자유를 잃을 것입니다. 애플리케이션에 향후 일일 추가 계획에 대한 명확한 계획이없는 일대일 메시징 및 친구 목록 기능 만 사용한다면 WebSockets +가 실행 가능한 솔루션이 될 것입니다. 반면에 응용 프로그램이 다자간 메시징 및 피어 투 피어 미디어 세션과 같은 다른 XMPP 확장의 이점을 얻으려면 XMPP를 사용하는 것이 좋습니다. 이러한 기능을 구현하려면 많은 시간이 필요하기 때문입니다.

+0

XMPP를 사용하지 않고 다른 방법을 구현하지 못하도록하는 내용은 없습니다. XMPP 명단. XMPP를 사용하면 자유를 잃지 않습니다. – Flow

+2

XMPP를 사용하기 위해 일부 클라이언트 및 서버 라이브러리를 사용할 것이기 때문에 약간의 자유를 잃을 것이라고 생각합니다. 또한 XMPP의 일부분을 다르게 구현할 수 있다는 점에 동의합니다. 이는 사용하는 XMPP 구현의 내부 작업에 대한 이해에 따라 자유 수준을 잃게 만듭니다. – Kumait

+1

저는 XMPP 클라이언트 라이브러리 나 서버를 사용자가 직접 구현하지 못하게합니다. 수색과 비슷한 것. – Flow

관련 문제