В чем разница между RSocket + TCP и RSocket + WebSocket?

Я совершенно не знаком с RSocket.

Я прочитал FAQ и страницу мотивации (и просмотрел страницу протокола) и понимаю, что RSocket можно использовать поверх TCP, WebSocket и Aeron. Но я не понимаю, в чем разница между использованием RSocket с этими транспортами, потому что все модели взаимодействия могут использоваться с каждым транспортом.

Я лично заинтересован в использовании канала RSocket для двусторонней связи, но не знаю, какой транспорт мне следует использовать. Например, в чем разница между RSocket (канал) + TCP и RSocket (канал) + WebSocket?

Я нигде не мог найти ответа, поэтому надеялся, что кто-то здесь сможет мне помочь.

Ты заранее.


person RatManMan    schedule 28.04.2021    source источник


Ответы (2)


RSocket позволяет вам программировать на разных платформах (JS, iOS, Android, C ++ Server) с помощью единой модели реактивного сетевого программирования. Чистая поддержка общих реактивных операций из таких фреймворков, как RxJava (Observable, Flowable, Single, Maybe, Completable).

Базовый транспорт - это деталь реализации. Но это важная деталь реализации, поскольку между мобильным устройством и сервером, размещенным в GCP, WebSocket может быть единственным жизнеспособным вариантом. Находясь в центре обработки данных, вы можете выбрать Aeron или TCP в зависимости от ваших требований.

Что бы вы ни выбрали, вы можете использовать ту же более высокоуровневую модель реактивных сетевых операций. Если вы знаете, что вам просто нужно сказать Aeron для работы от одного сервера к серверу, вам может не понадобиться RSocket, вы можете программировать непосредственно против Aeron. RSocket дает вам эту абстракцию над ним.

person Yuri Schimke    schedule 01.05.2021
comment
Тай за ответ! Что именно вы имеете в виду: давайте программировать на разных платформах с помощью единой модели реактивного программирования? Вы имеете в виду, что RSocket предоставляет стандартный API, который можно использовать на разных платформах (браузер, Java-сервер и т. Д.) Для связи с другими платформами? (например, из браузера на сервер Java) - person RatManMan; 01.05.2021
comment
Ага. В основном так. На ваш вопрос, как вы собираетесь его использовать и с какими клиентами, это очень важно для оптимального выбора - person Yuri Schimke; 01.05.2021
comment
И вы говорите, что, хотя выбор правильного транспорта важен, это не имеет значения с точки зрения разработчиков, потому что RSocket предоставляет одни и те же реактивные функции независимо от того, какой транспорт используется? Может быть, это глупый вопрос, но как тогда выбрать подходящий транспорт? Я, например, планирую иметь Java-сервер RSocket в AWS, который двунаправленно взаимодействует с браузером. Не могли бы вы привести пример требований для использования WebSocket или TCP? - person RatManMan; 01.05.2021
comment
Используйте веб-сокет. Как браузеры, так и облачные провайдеры поддерживают веб-сокет. Demo.rsocket.io показывает этот случай - person Yuri Schimke; 01.05.2021
comment
Я совершенно забыл посмотреть, какие браузеры по какой-то причине поддерживают ... Думаю, вы не можете использовать Aeron или TCP прямо в браузере. Вы знаете, правда ли это? - person RatManMan; 01.05.2021

RSocket предоставляет общий программный интерфейс для нескольких транспортов. Вы можете выбрать транспорт исходя из качества предоставляемых услуг. Например, если вам требуется простота обхода межсетевого экрана, выберите WebSocket, если вам требуется передача с низкой задержкой и высокой пропускной способностью, выберите Aeron. Все относительно. Aeron может преодолевать межсетевые экраны, но конфигурация более специализированная, и WebSocket может обеспечить приемлемую производительность, но он не относится к той же категории, что и Aeron.

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

person Martin Thompson    schedule 30.04.2021
comment
Так что выбор не имеет ничего общего с RSocket. Вы должны посмотреть, что принесут на стол транспорты? WebSocket = WS Я до сих пор не очень понимаю разницу между RSocket + TCP и RSocket и WS. Я думал, что основное различие между TCP и WS заключается в том, что WS обеспечивает двунаправленную связь. Но RSocket также предоставляет эту функцию, даже когда используется TCP. WS als использует TCP, поэтому можно сказать, что использование RSocket с TCP быстрее (лучше?), Чем использование RSocket с WS, потому что вы пропускаете дополнительный уровень. Так в чем же разница между RSocket + TCP и RSocket + WS? - person RatManMan; 30.04.2021
comment
RSocket с TCP или Aeron лучше подходит для обмена данными между сервером, а RSocket с WebSocket лучше подходит для обмена данными между сервером и браузером. - person Martin Thompson; 30.04.2021
comment
Не могли бы вы объяснить, почему это так, или указать мне правильное направление? Я мало знаю об этих вещах (сетевых протоколах?) И хотел бы узнать об этом, но не знаю, с чего начать. Тай за ответы, кстати! - person RatManMan; 01.05.2021
comment
Большинство браузеров находятся за брандмауэром, который разрешает только HTTP, который используется для запуска веб-сокета. - person Martin Thompson; 04.05.2021