Интернет-сокеты Spring 4 - нужен ли мне брокер?

Я использовал следующую ссылку, чтобы поиграть с новыми веб-сокетами Spring 4:

http://spring.io/guides/gs/messaging-stomp-websocket/

Мне было интересно, должен ли я использовать брокера Stomp, чтобы использовать Spring framework? есть ли какой-нибудь брокер менее способ его использовать?

Благодарность


person Urbanleg    schedule 24.04.2014    source источник


Ответы (2)


В этом руководстве используется простая реализация брокера, представленная в Spring Framework. Эту роль играет всего лишь фрагмент кода Java - в этой настройке нет настоящего брокера. Так что да, есть способ использовать это без брокера, и вы уже это делаете.

Однако в этой реализации отсутствуют многие функции, и вы можете захотеть использовать настоящий брокер (например, RabbitMQ) в производстве.

Изменить:

Вам не обязательно использовать STOMP и брокер сообщений, фактически вы можете использовать Websocket API напрямую. Как указано в этой презентации:

Непосредственное использование API WebSocket немного похоже на написание пользовательского приложения сервлета, за исключением того, что протокол WebSocket находится на более низком уровне, чем HTTP.

В зависимости от целей вашего приложения вы в любом случае можете перейти к приложению, управляемому сообщениями; задача не из легких, решить самостоятельно ...

person Brian Clozel    schedule 24.04.2014
comment
Да, я знаю, но можно ли использовать websocket с пружиной без ЛЮБОГО брокера? или Stomp является обязательным, когда вы решите использовать Spring с веб-сокетами? - person Urbanleg; 27.04.2014
comment
@Urbanleg нет, это не обязательно, это необязательно, если вы хотите использовать топт или нет. Stomp - это протокол более высокого уровня, поэтому вам не нужно иметь дело с обработкой сеансов низкого уровня для websocket. - person AliR; 27.05.2014
comment
Но что, если я хочу использовать топтание, но не предоставляю брокера сообщений? Я хотел бы предоставить интерфейс для самостоятельной обработки события удара, вместо того, чтобы полагаться на брокера сообщений. - person Phate; 26.05.2020

Я бы посоветовал не использовать STOMP, поскольку он требует, чтобы в ваш код была встроена структура. Фреймворки приходят и уходят, и их нужно обновлять.

Вы можете использовать канал Spring (загрузочный) WebSocket для передачи JSON без использования STOMP. Если вы разговариваете с внешним приложением (например, JavaScript), JSON уже является вашими «модельными» данными, которые можно легко передавать / анализировать в двух направлениях.

API WebSocket содержит достаточно, чтобы иметь возможность onConnect (), onMessage (), onError () вашей реализации. На самом деле я предпочитаю это, потому что все контролирую. Например, в onConnect вы можете проверять токены и настраивать безопасность.

person Coen Damen    schedule 12.04.2019