2016-07-01 4 views
3

Начиная с весны 4, у нас есть поддержка протокола STOMP (sub) по сравнению с WebSocket. Я понимаю, преимущество WebSocket по сравнению с HTTP и использованием & преимущества использования STOMP над WebSocket, но я хотел бы понять следующее:STOMP поверх websockets vs plain STOMP. Какая из них лучше?

  1. Существует ли какое-либо преимущество производительности непосредственно с использованием протокола педали эффектов для поговорить с MB (например, RabbitMQ или Kafka - возможно, в будущем)

  2. Есть ли какая-либо польза от использования STOMP в качестве суб-протокола через веб-сокеты, кроме как позаботиться о квитировании, требуемом клиентом для подключения к сервер/МБ

ответ

7

Это ортогональные проблемы. Websocket - это транспорт; Фактически, при использовании sock.js вы можете использовать множество транспортов в качестве резервных копий и по-прежнему использовать STOMP.

STOMP описывает формат сообщений, обмен которыми осуществляется между клиентами и серверами.

Это как просить сравнить TCP и HTTP.

  1. Вы не можете «просто использовать» STOMP для связи с сервером или брокером сообщений. Вы должны использовать транспорт для отправки этих сообщений STOMP.
  2. STOMP не заботится о рукопожатии с websocket, на самом деле, он вообще ничего не знает об этом. Например, вы можете прозрачно использовать STOMP поверх HTTP и не видеть разницы с точки зрения STOMP.
+0

Что касается вашей точки 1) По ссылке https://www.rabbitmq.com/protocols.html кажется, что мы можем использовать web-stomp (через http), но упомянутый по умолчанию STOMP/MQTT/AMQP Не используйте HTTP. Я не уверен, как рукопожатие происходит без базового HTTP, но придется исследовать –

+0

Но весной документация на «26.4.14 STOMP Client» написано, что есть STOMP через WebSocket и STOMP через TCP-клиент. Итак, в моем понимании, WebSocket уже строит TCP, поэтому STOMP через TCP выходит из уровня WebSocket между ними? Так где же было бы выгодно не оставлять слой WebSocket? Изменить: я хочу общаться с сервера на сервер (так что ни один браузер не задействован) – tObi