Я собираюсь разработать веб-сайт, на котором будет чат почти в реальном времени. Я знаю, что это можно реализовать с использованием протоколов xmpp или websocket. Я также знаю, что протокол xmpp был разработан в 1999 году, и я думаю, что он должен быть зрелым в настоящее время. С другой стороны, протокол websocket был разработан в 2011 году.
- Зачем нужен был websocket, если xmpp хорошо справлялся с разговорами в реальном времени?
- В чем основные различия между двумя протоколами?
- И когда я должен выбрать одно из них, а не другое?
Ответы:
Короткий ответ - «оба».
XMPP - это набор прикладных протоколов для общения в чате в реальном времени (и многих других вещей, если на то пошло) - затем он должен каким-то образом транспортироваться по сети, поэтому вам нужна транспортная привязка. Для XMPP существует три основных транспортных привязки:
Поэтому, если вы разрабатываете приложение чата в браузере, вы должны выбрать XMPP в качестве протокола приложения и использовать веб-сокеты (в современном браузере) или BOSH (в более старом браузере) в качестве сетевого транспорта. Если вы используете библиотеку XMPP для Javascript, такую как Stanza.io ( https://github.com/otalk/stanza.io ), она будет поддерживать оба, и вы будете просто думать о XMPP, а не о транспортном уровне, кроме как при настройке, когда вам нужно указать, к какой конечной точке подключиться.
(Вы не можете использовать «только веб-сокеты» для чата - вы можете использовать веб-узлы без XMPP, но на самом деле это означает, что вы изобретаете свой собственный протокол уровня приложения для чата, и, скорее всего, вы собираетесь сэкономить много времени и головных болей, используя преимущества работы, которая уже была проделана для написания одного с полезными свойствами (безопасность, идентификация, расширяемость и т. д.) и для которого существуют существующие библиотеки и серверы, используя вместо этого XMPP.)
источник