Является ли программа чата, основанная на REST, злоупотребляющая XMPP, хорошей идеей? - PullRequest
1 голос
/ 23 января 2020

Я планирую написать приложение «клиент + сервер» с нуля, одним из основных пунктов приложения является обмен сообщениями в чате. Я привык писать API отдыха и мне это нравится. Хотя в других постах я читал, что это совсем не оптимально для варианта использования «обмена сообщениями в чате» (я согласен с этим, конечно).

Я бы очень хотел написать сервер, основанный на Rest, поэтому моя идея (при желании иметь хоть какую-то эффективность [не генерировать запросы GET каждую секунду ..] и при этом поддерживать некоторый опыт пользователя в реальном времени) в основном такова:

  • Использовать некоторые вид XMPP только для уведомления клиента, поэтому он будет знать, что серверу есть, что ему сказать. (клиент мог бы, например, вызвать что-то вроде «1.2.3.4:5678/.../whatsNew"
  • ». Затем сервер отправляет информацию об обновлении (сообщения, статусы online / offline / not_here et et c)

Я полностью согласен с тем, что эта идея не изящна и что для этого мне, вероятно, следует использовать только XMPP, но я думаю, что у моего подхода есть некоторые преимущества:

  • Как я уже сказал Знаете, отдых, и это приложение не будет таким огромным, это может сэкономить много времени, возможно, даст мне больше шансов закончить это вообще.
  • Мне кажется, что отдых больше поддерживается, и в основном на каждом устройство, браузер и т. д. c проще в реализации
  • Некоторые порты, используемые XMPP, могут быть заблокированы (корпоративные брандмауэры и т. д. c), поэтому, с моим подходом, если по какой-либо причине XMPP не работает, мой интерфейс может все еще устанавливайте соединения и получайте сообщения, только с худшей скоростью (например, по ссылке sh или один раз в 20se c, если я запрограммирую это таким образом)

Я хотел бы знать, если я я в л немного правее.

Если это уместно, я планирую написать интерфейс JavaFX (возможно, + Maven (+ Spring?) )) и Maven + Springboot Java backend.

Я думаю, что мне нужен XMPP или что-то подобное, потому что мне нужны некоторые функции реального времени («пользователь печатает», «статус пользователя - dont_talk_to_me», «только что пришло сообщение») : "et c.) и я не хочу спамить сервер бесполезными запросами, просто чтобы постоянно получать пустые результаты.

Что вы думаете об этой идее, используя XMPP вместе с Rest

* 1032? * Большое спасибо за любой ответ!

1 Ответ

0 голосов
/ 23 января 2020

XMPP звучит как разумный выбор, если вы хотите в реальном времени . Ваши неопределенности в отношении XMPP не совсем верны: вы можете легко использовать XMPP в браузере (либо через BO SH, который является длинным опросом HTTP, либо с веб-сокетом, который должен быть более эффективным), и учитывая, что он работает на типичных веб-портах (80/443) он не будет заблокирован.

Есть также много библиотек (в том числе для Java: https://xmpp.org/software/libraries.html), которые должны ускорить процесс разработки (так что вы можете задуматься о своем приложении).

В противном случае вам придется разработать полный интерфейсный слой, который бы переводил то, что вы хотите, в какой-то тип REST, доступный для пользователя, и, похоже, вы все равно использовали бы какое-то постоянное соединение получать мгновенные уведомления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...