powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / websockets + rest
31 сообщений из 31, показаны все 2 страниц
websockets + rest
    #39532575
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такая тема, мопед не мой, не надо критиковать решение )) можно просто сказать что так не делается. но... в общем задача.
есть некий вебсервис. есть некий фронтовый клиент. по ресту клиент дергает сервера и достает какие-то объекты или наборы объектов по краду. тут всё просто и обыденно.

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

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

и всё бы ничего, но возникает ряд вопросов - насколько данный подход верен? может лучше по вебсокету вообще тогда уж ВСЁ отдавать? или отдавать только обновленные поля? (но тут много эвристики). или вообще всё не так?

в описанном виде выше оно работает. тут две проблемы - по-хорошему надо сделать механизм чтоб бэк всегда слал что-то фронту когда обновляется любой набор данных. это проблема один. как ее решить - тут в принципе всё ясно. и тут выходит другая проблема - допустим у меня сотня юзеров сидит с сотней клиентов. и тут у меня случайно так обновилось что-то циклически 100 раз (ну скажем, десять сущностей по 10 раз), далее у меня на фронт сотне юзеров улетает каждому по 100 сокетмесаджей.. или 10 000 меседжей выплёвывает краткосрочно мой бэк.
и если гипотетически у ста юзеров открыты окошки показывающие те самые сущности назад на бэк возвращается запросы в количестве от 100 и до 10 000 единовременно.
бэк сам себя убил.

можно конечно же подумать о микрооптимизациях, одна проблема минимизируется тем что скажем, наверняка у всех все сущности ожидаться к показу не будут.

и вторая как то трекать на бэке на слое отсылки сокетсообщений на предмет какие юзеры какие сокетсообщения ожидают (типа у меня открыто окно А и поэтому мне не надо получать сокетмеседж об обновлении таблицы Б). но это выглядит как-то черезчур уж сложно, хоть и интересно )) и мне кажется тут должен быть какой то простой вариант. люди же как то пишут интерактивные приложения? или там вообще весь обмен идет по сокетам, а-ля графкьюэль, без всяких этих ваших старомодных рестов?
...
Рейтинг: 0 / 0
websockets + rest
    #39532602
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTтакая тема, мопед не мой, не надо критиковать решение )) можно просто сказать что так не делается. но... в общем задача.
есть некий вебсервис. есть некий фронтовый клиент. по ресту клиент дергает сервера и достает какие-то объекты или наборы объектов по краду. тут всё просто и обыденно.

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

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

и всё бы ничего, но возникает ряд вопросов - насколько данный подход верен? может лучше по вебсокету вообще тогда уж ВСЁ отдавать? или отдавать только обновленные поля? (но тут много эвристики). или вообще всё не так?

в описанном виде выше оно работает. тут две проблемы - по-хорошему надо сделать механизм чтоб бэк всегда слал что-то фронту когда обновляется любой набор данных. это проблема один. как ее решить - тут в принципе всё ясно. и тут выходит другая проблема - допустим у меня сотня юзеров сидит с сотней клиентов. и тут у меня случайно так обновилось что-то циклически 100 раз (ну скажем, десять сущностей по 10 раз), далее у меня на фронт сотне юзеров улетает каждому по 100 сокетмесаджей.. или 10 000 меседжей выплёвывает краткосрочно мой бэк.
и если гипотетически у ста юзеров открыты окошки показывающие те самые сущности назад на бэк возвращается запросы в количестве от 100 и до 10 000 единовременно.
бэк сам себя убил.

можно конечно же подумать о микрооптимизациях, одна проблема минимизируется тем что скажем, наверняка у всех все сущности ожидаться к показу не будут.

и вторая как то трекать на бэке на слое отсылки сокетсообщений на предмет какие юзеры какие сокетсообщения ожидают (типа у меня открыто окно А и поэтому мне не надо получать сокетмеседж об обновлении таблицы Б). но это выглядит как-то черезчур уж сложно, хоть и интересно )) и мне кажется тут должен быть какой то простой вариант. люди же как то пишут интерактивные приложения? или там вообще весь обмен идет по сокетам, а-ля графкьюэль, без всяких этих ваших старомодных рестов?
если у тебя реализованы websocket то правильнее сразу по ним и передавать изменения.
...
Рейтинг: 0 / 0
websockets + rest
    #39532607
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
Rest это нет длинного соединения и тебя не помнят.
WS это всё наоборот.
Как это вы объедините?
...
Рейтинг: 0 / 0
websockets + rest
    #39532608
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTдопустим у меня сотня юзеров сидит с сотней клиентов. и
У клиента таймер и галка: Получать обновления раз в n минут или сек.
Ни разу на компе своём не видел галки? Жжёшь.
...
Рейтинг: 0 / 0
websockets + rest
    #39532613
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой галки? Речь о вебприложении
...
Рейтинг: 0 / 0
websockets + rest
    #39532641
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTКакой галки? Речь о вебприложении
Счас грань веб и не веб стирается.
Ты её сам стираешь вводя сообщения от сайта клиенту.
...
Рейтинг: 0 / 0
websockets + rest
    #39532643
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну задача то тривиальна. в мире миллиарды сервисов на ресте. и в принципе, ничего особого нет в желании сделать интерактивное обновление. или там механизмы иные?
...
Рейтинг: 0 / 0
websockets + rest
    #39532650
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариант отказываться от реста - к сожалению, вообще не вариант.
...
Рейтинг: 0 / 0
websockets + rest
    #39532655
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,

Да, вполне нормальное решение. Нотификации по WS, отдача по REST. Остальные оптимизации уже зависят от предметной области. Либо кэш воткнуть. Либо очередь с задержкой, чтобы массовые обновления не вызывали кучу нотификаций и т.п.
...
Рейтинг: 0 / 0
websockets + rest
    #39532679
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTвариант отказываться от реста - к сожалению, вообще не вариант.
Значит ws или таймер только для обратного сообщения-флажка. Так?
После флажка самому забирать.
...
Рейтинг: 0 / 0
websockets + rest
    #39532680
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTмиллиарды сервисов на ресте. и в пр
Дак они лезут сами в клиент?
...
Рейтинг: 0 / 0
websockets + rest
    #39532774
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не совсем понял что вы имеете ввиду.
...
Рейтинг: 0 / 0
websockets + rest
    #39532782
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTне совсем понял что вы имеете ввиду.
Я имел ввиду, что миллиарды сервисов, они обычные и не такие как ты захотел. Зачем ты их упомянул я не понял.
...
Рейтинг: 0 / 0
websockets + rest
    #39532803
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
зачем дергать по рест, когда можно сразу передать по websocket?
...
Рейтинг: 0 / 0
websockets + rest
    #39532823
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты предлагаешь переписать всё приложение с реста на вебсокет и графQL?
...
Рейтинг: 0 / 0
websockets + rest
    #39532824
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaTне совсем понял что вы имеете ввиду.
Я имел ввиду, что миллиарды сервисов, они обычные и не такие как ты захотел. Зачем ты их упомянул я не понял.
сорри может не так выразился. имею ввиду что есть много сервисов с динамическим обновлением данных на вьюшках. вот и задался вопросом как это реализовано
...
Рейтинг: 0 / 0
websockets + rest
    #39532825
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя, или ты предлагаешь кусочек передать по ресту, следом мне в приложении выстроить параллельный слой, куда клиент будет регаться по вебсокету говоря что он по ресту дернул какой-нибудь ресурс и типа "подписывается" на слушание этого ресурса и кусочки обновлений мне слать ему по вебсокету а клиент потом эти кусочки будет собирать в одно целое и показывать юзеру?

нееее. спсииибо.
...
Рейтинг: 0 / 0
websockets + rest
    #39532842
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTможет не так выразился. имею ввиду что есть много сервисов с динамическим обновлением данных на вьюшках.
Я не врубаюсь. Если их много, дак и приводи пример.
...
Рейтинг: 0 / 0
websockets + rest
    #39532868
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTвадя, или ты предлагаешь кусочек передать по ресту, следом мне в приложении выстроить параллельный слой, куда клиент будет регаться по вебсокету говоря что он по ресту дернул какой-нибудь ресурс и типа "подписывается" на слушание этого ресурса и кусочки обновлений мне слать ему по вебсокету а клиент потом эти кусочки будет собирать в одно целое и показывать юзеру?

нееее. спсииибо.
ну где-то так, только как ни крути у тебя получится так. потому что это будет самое простое, хотя это и грозит переписыванием кода...
а какие проблемы проблемы на клиенте собрать и вставить? и что за клиент? браузер? тогда всё просто.
...
Рейтинг: 0 / 0
websockets + rest
    #39532869
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
самое трудное ты уже сделал - внедрил websocket. остальное уже намного проще
...
Рейтинг: 0 / 0
websockets + rest
    #39532898
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадячто это будет самое простое, хотя это и грозит переписыванием кода..
вадя,
учись компромиссам))
...
Рейтинг: 0 / 0
websockets + rest
    #39532915
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадячто это будет самое простое, хотя это и грозит переписыванием кода..
вадя,
учись компромиссам))
я не против компромиссов, просто мне кажется, что тс придет к ws, но мне интересно к чему тс придет на самом деле.
...
Рейтинг: 0 / 0
websockets + rest
    #39532923
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяя не против компромиссов, просто мне кажется, что тс придет к ws
))
"я не против компромиссов, но он придёт всё равно к моему варианту" (с - вадя)
...
Рейтинг: 0 / 0
websockets + rest
    #39532988
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaTможет не так выразился. имею ввиду что есть много сервисов с динамическим обновлением данных на вьюшках.
Я не врубаюсь. Если их много, дак и приводи пример.
например, есть много форумных движков где ты когда сидишь на форуме там ответы онлайн появляются снизу прирастают )) но там я не разгребал как они это в деталях сделали. я гооврил с нашим фронтовиком он говорит могу получить сигнал от бэка что есть обновы, в бэкграунде браузера по ресту дернуть ресурс, а потом отрисовать дэльту.
еще я видел такое в сервисах онлайн бронирований, когда на лету у тебя в таблицах данные менялись. это о не корпоративных системах речь.

зы. да. клиент - это браузер.
зы2. да, система она не совсем кровавый энтерпрайз, но достаточно навороченный кейс-менеджмент.
...
Рейтинг: 0 / 0
websockets + rest
    #39532989
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяandreykaT,
самое трудное ты уже сделал - внедрил websocket. остальное у
же намного проще

нет, это самое простое. то, что ты говоришь - это по-сути отказываться от рест контроллеров и переходить на транспорт по вебсокету со всеми вытекающими. я с тобой согласен, что это бы решило задачу радикально. но это не вариант и никто мне не позволит это делать.
...
Рейтинг: 0 / 0
websockets + rest
    #39532993
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaT,
Rest это нет длинного соединения и тебя не помнят.
WS это всё наоборот.
Как это вы объедините?

в приницпе, Блакович уже сказал что такой подход имеет место быть. в моем случае я рассматриваю ВС как сигнальный слой, который просто сигнализирует окружающим что произошло какое-то событие и всё. а слушатели уже сами что-то на этом основании делают. или не делают.
...
Рейтинг: 0 / 0
websockets + rest
    #39533003
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTсидишь на форуме там ответы онлайн появляются снизу прирастают ))
честно говорю - не помню таких))
автормоем случае я рассматриваю ВС как сигнальный слой
я с ним согласен, если это сигнальный слой.
Тут очень тонкая грань уйти в мешанину технологий.
...
Т.е. _сигнал_ либо таймер либо веб сокет.
Далай сокет. У меня на работе таймер, но это корпоратив.
...
Рейтинг: 0 / 0
websockets + rest
    #39533021
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так мешанину Вадим вроде как и предлагает :) или он радикал и предлагает всё переписать, увы, мне это невозможно хотя под какой-нибудь графкуэль это было бы прелестью.

инвижн паверборд эти вроде сделали "интерактивный" движок. там и попапы всплывают, полученные через вебсокет. могу дать точный адрес одного из их форумов, впрочем, не думаю, что будет интересно.

да, я рассматриваю сугубо как сигнальный слой. чуть ранее ВС были запилены на использование еще и отсылки поп-апов, с каким-то текстом внутрях. но я думаю и от этого отказаться, чтоб максимум в ВСах приходили только типы записей и их айди и всё.

т.е. если пришел тип записи (название сущности), то фронт знает что ему надо обновить таблицу. если пришел тип записи с айдихой - то фронт знает, что ему надо сделать гет /сущность/айди. (если хочет ее отобразить) - на этом функционал сокетов закончен. (в рамках этого проекта в смысле).

насчет обновления каждые 10 сек это может и тема, но, имхо тут тоже есть риск оверхедов - сидит 50 (500 5000 50000) человек и у каждых 50-ти делается по запросу каждые 10 сек. или у меня, когда эти 50 делают запрос только по сигналу (но одновременно, а не как у тебя размазанно по времени в периоде 10 сек). т.е. и там и там есть плюсы и минусы.

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

из минусов - надо делать этот механизм и поддерживать его с обоих концов.
...
Рейтинг: 0 / 0
websockets + rest
    #39533028
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
да.
Я ещё люблю свободу. Поэтому у меня стоит тумблер - Подписка+обновление и подписка без обновления(сам нажмёт F5).
Кому что нравится.
...
Рейтинг: 0 / 0
websockets + rest
    #39533065
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
Имхо можно глянуть в сторону Server Side Events as EventSource
Но ишак как обычно ((
...
Рейтинг: 0 / 0
websockets + rest
    #39533069
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
мещанина - возможно это кажется. использовать термин «мигнпльный слой» возможно и делает существующее логичным. и на самом деле возможно это так. но если глобально - это выглядит как заплатка. против аргумента «не разрещат» спорить трудно. но когда 5n*m юзеров - это хороший аргумент. у тебя есть несколько вариантов и они все имеют право на существование. но у них разная цена - выбор за тобой.
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / websockets + rest
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]