Подключаем WebSocket (SockJS + Stomp). Spring Boot REST

  Рет қаралды 49,297

letsCode

letsCode

Күн бұрын

Spring Boot Rest Application: подключаем WebSocket (через библиотеку SockJS) и отправляем сообщения по протоколу Stomp. С использованием данных технологий мы будем асинхронно обновлять данные в браузере клиента без перезагрузки станицы.
Код из видео:
github.com/dru...
Руководство по подключению WebSocket к SprintBoot проекту:
spring.io/guide...
Can I use: WebSocket:
caniuse.com/#s...
Документация по StompJS:
stomp-js.githu...
Документация по SockJS:
github.com/soc...
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Твиттер: / letscodedru
➡ Чат в Discord: / discord
➡ Группа Вконтакте: letscod...
➡ Канал в Telegram: t.me/letsCode_dru
➡ Чат в Telegram: t.me/joinchat/...
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
Поддержать проект:
➡ Patreon / letscodedru
➡ Яндекс.Деньги money.yandex.r...
➡ PayPal paypal.me/letscodedru
➡ Qiwi qiwi.me/letscode
➡ WebMoney/BitCoin funding.webmon...
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Ссылка на канал: / @letscodedru
➡ Ссылка на Яндекс.Дзен: zen.yandex.ru/...

Пікірлер: 89
@ФедорШморгилов
@ФедорШморгилов 5 жыл бұрын
Андрей, большое спасибо за все твои видео, отлично объясняешь!
@dreamer_vi905
@dreamer_vi905 Жыл бұрын
Видосу уже скоро пять лет, но всё ещё полезный. Спасибо)
@nikitaantonenko3287
@nikitaantonenko3287 5 жыл бұрын
Андрей спасибо огромное!!!))) Обожаю ваш канал!!))) Всегда очень интересные темы!!!)))))
@IvanIvanov-oi5nx
@IvanIvanov-oi5nx 5 жыл бұрын
Круть крутяшная!!!!! Респект, вот чего хотелось-то попробовать))) С нетерпением жду продолжения!!!
@VASY1PUPKIN2
@VASY1PUPKIN2 6 жыл бұрын
Аффтар я тебя люблю в хорошем смысле этого слова!!
@YuretsUA
@YuretsUA 4 жыл бұрын
Ни один урок не обходится без последствий, если просто выполнить особо не вдумываясь то ничего не отложится. Я вот попытался разобраться, застрял на 2 часа, никак не мог понять что происходить в handlers, все виной тому, что в java не сталкивался с функциональным программированием, и только потом понял что в handlers ложатся не объекты, а функции которым в последствии передаются сообщения из сервера, зачем такая примудрость пока не разобрался (в будущем думаю пойму) но блин в мозгу отложилось надежно. В очередной раз спасибо за видео, в каждом новом уроке новая технология, которая заставляет разбираться и развиваться. Удачи автору.
@АлександрМоскаленков-з6й
@АлександрМоскаленков-з6й 4 жыл бұрын
Спасибо тебе, добрый человек. Тоже голову ломал над этим.
@mohentohen7714
@mohentohen7714 7 ай бұрын
На одном дыхании
@АлександрБугримов-о1е
@АлександрБугримов-о1е 6 жыл бұрын
Вообще супер видео! Спасибо.
@artsbrand
@artsbrand 5 жыл бұрын
крутая технология!!! а мы поллинги и пушинги юзали ) спасибо!
@user-wj7if5xq6l
@user-wj7if5xq6l 5 жыл бұрын
Большое спасибо и и жирный лайк за видео! По образу и подобию сделал удаление сообщений, всё работает
@user-rv4sh5nc6x
@user-rv4sh5nc6x 4 жыл бұрын
скинь код, как удаление реализовал, пожалуйста
@D.P._
@D.P._ 5 жыл бұрын
Спасибо! Отличный и лаконичный материал!
@D.P._
@D.P._ 4 жыл бұрын
Спасибо! Как всегда годные уроки. всегда есть что-то новое. иногда понятное иногда совсем нет, но всегда интересно
@user-tj7kc3rd4j
@user-tj7kc3rd4j 6 жыл бұрын
Ну как всегда лойс)
@maksimdidukh6114
@maksimdidukh6114 4 жыл бұрын
От души душевно в душу (ↄ).
@bek2074
@bek2074 5 жыл бұрын
Чтобы пройти это урок нужно разобраться в уроке "Настраиваем Webpack", который ссылается на урок "Webpack - сборщик web приложений", который ссылается на урок "Node.js: NPM - пакетный менеджер"...
@davronsherbaev9133
@davronsherbaev9133 4 жыл бұрын
Ну, как бы это нормально)
@fedorivanhoe3266
@fedorivanhoe3266 2 жыл бұрын
А у меня и так всё работает, мне вообще gulp больше нравится
@AnnaSmirnova1
@AnnaSmirnova1 4 жыл бұрын
Аладунь! Спасибо огромное!!!!
@letsCodeDru
@letsCodeDru 4 жыл бұрын
Сразу видно, кто стримы не пропускает XD
@antonfedoruk1037
@antonfedoruk1037 4 жыл бұрын
Ахах, досматривайте видео до последней секунды! Оно того стоит :)
@vladvlad8839
@vladvlad8839 4 жыл бұрын
Супер круто!
@victormog
@victormog 6 жыл бұрын
Респект!
@vjotov
@vjotov 5 жыл бұрын
14:00 - в каком моменте и как мы настроили mapping путей? 16:50 - можно ролик с бэкстейджа - как вычислили что именно там ошибка? у меня опечатка получилась - в MessageController вместо аннотация @MessageMapping("/changeMessage") была changeMassage. есть вариянт заставить спринг писать в консоль, когда кто то не туда стучится? как при классическим REST когда не найден mapping?
@noyklgd4403
@noyklgd4403 6 жыл бұрын
Автору очередные плюсы к карме)
@Sulf8
@Sulf8 3 ай бұрын
за grep console спасибо)
@user-uq4nd6go9c
@user-uq4nd6go9c 4 жыл бұрын
В конце песня отладчика: "Какого хера, какого хера..." :D
@Elvolvers
@Elvolvers 4 жыл бұрын
Спасибо! Кстати для поиска различий между файлами можно использовать Araxis Merge, например.
@nailsaggitarius4212
@nailsaggitarius4212 4 жыл бұрын
Зря сделали "по-молодежному" теперь затруднения как собрать ваш проект, если например нужно hibernate, который я собрал по вашему же видео и websocket, который теперь собирается совершенно иначе. Слишком крутой входной порог вы сделали.. Извините, конечно, видео отличные, очень доходчивые.
@dmitrysomsin2117
@dmitrysomsin2117 4 жыл бұрын
Спасибо, но это первое видео в котором я не понял 60% информации)
@user-fq9hu1sz7l
@user-fq9hu1sz7l 6 жыл бұрын
Вопрос по уроку Bean Validation: Если по одному полю срабатывает сразу два условия валидации, как в этом случае получить список ошибок? При использовании коллекции Map выскакивает ошибка, т.к. появляется второй дублирующий ключ.
@antihype3450
@antihype3450 5 жыл бұрын
КАК исправить? send message не реагирует ,делал все как на видео WebSocketSession[1 current WS(1)-HttpStream(0)-HttpPoll(0), 1 total, 0 closed abnormally (0 connect failure, 0 send limit, 0 transport error)], stompSubProtocol[processed CONNECT(1)-CONNECTED(1)-DISCONNECT(0)], stompBrokerRelay[null], inboundChannel[pool size = 8, active threads = 0, queued tasks = 0, completed tasks = 12], outboundChannel[pool size = 1, active threads = 0, queued tasks = 0, completed tasks = 1], sockJsScheduler[pool size = 4, active threads = 1, queued tasks = 3, completed tasks = 14]
@abaialihan9274
@abaialihan9274 4 жыл бұрын
я с этой проблемой лежу неделю :( новые сообщения не добавляются, старые не редактируется, работает только удаление upd: в MessageController в методе change не правильно написал @MessageMapping("/change") . исправил @MessageMapping("/changeMessage")
@trygoboi4790
@trygoboi4790 4 жыл бұрын
@@abaialihan9274 привет. Пожалуйста. Можешь примерно объяснить как реализовывал удаление? И скажу, при удаление, другой пользователь видит это удаление без перезагрузки или только после перезагрузки?
@bassturbatorark
@bassturbatorark 4 жыл бұрын
Удаленные месседжи не пропадают у другого юзера без перезагрузки страницы
@anzheoneanzeone1095
@anzheoneanzeone1095 4 жыл бұрын
Андрей , спасибо! вопрос у меня такой, сколько раз вы это делали и какое время лично вам нужно чтобы изучить и внедрить что -то новое (даже на примере webcoket, security). Дело в том, что я уже неделю не могу сделать ))) вот хочу понять один я такой или нас много, как быть если начальство скажет сделать такое, а тут такие заторы)
@letsCodeDru
@letsCodeDru 4 жыл бұрын
Когда учился тоже нихренаж не работало. Сейчас уже опыт есть, могу гораздо быстрее разобраться. Это как с машиной: начинаешь на одной и ездишь еле-еле. А потом, с опытом, пофиг на какой и достаточно хорошо катаешь
@GrishaObrazcovV
@GrishaObrazcovV 6 жыл бұрын
Когда продолжение будет?
@psvm_channel
@psvm_channel Жыл бұрын
Подскажите, как проксировать трафик по вебсокет протоколу в спрингбут приложении? У меня на проекте микросервисная архитектура, в качестве входной точки используется спринг бут приложение, которое аутентифицирует запросы с клиента и проксирует их в другие модули. Между браузером и одним из внутренних модулей нужно установить веб сокет соединение. Подскажете какие-нибудь способы?
@vladislavosipenkov1412
@vladislavosipenkov1412 5 ай бұрын
А нет видео где stomp но вместо фронта - postman?
@VladShtaiier
@VladShtaiier Жыл бұрын
Привет, а обязательно что-бы месседж был именно текстом? Нельзя например сделать вместо просто текста какой-то типу пост, в котором есть титулка, тело и тд. Делая тем самым что-то по типу ленты, которую можно скролить
@mizantropoff
@mizantropoff Ай бұрын
В общем , плохо раскрыта тема с маппингами, все эти /changeMessage, /app, /topic/activity, /gs-guide-websocket. Последний воспринимается как какая то обязательная константа, но я переворошил кучу источников - ее можно называть как хочешь, в том числе часто используется тот же мапинг, что и @MessageMapping. Но сейчас не об этом. Почему то не сказано, опять же, если я правильно понял из других источников, , что SockJS - это как раз и есть формирующий очередь сообщений, когда WebSocket по каким то причинам недоступен... И у него как раз есть какой то iFrame, встраиваемый в index Хочу понять, что это за фича - нигде не нашел толком описаие, промучился несколько часов. У меня при запуске после авторизации страница загружалась не localhost:8080, а localhost:8080/gs-guide-websocket/*** , с надписью "don't panic, it is for cross-origin magic. Проблема возникала еще перед авторизацией - , как я понял, опять же, не сумев подключиться к серверу и создать соединение из за асекьюрити при первом неавторизованном заходе на страницу, уже шла переадресация на /gs-guide-websocket. И после авторизации шел переход на запрашенную перед авторизацией страницу. Как я понял, адрес возникает имменно при создании ws.js stompClient = Stomp.over(() => new SockJS('/gs-guide-websocket')). Я пробовал его заменить маппингом как у @MessageMapping (много где в интернете так и делается), адрес менялся в адресной строке localhost:8080/changeMessage/***** , но показывался тот же , или вообще непонятно что. Последнее что я попробовал сделать - дать доступ в SecuriytFilterChain маппингу /gs-guide-websocket без авторизации . После этого непонятная переадресация прекратилась, и все заработало - уж не знаю, правильно ли нет, визуально вроде да, а вот какие в результате этого могут быть проблемы с безопасностью, или их не возникнет - не знаю. Если кто может мне как то разъяснить или кинуть ссылку где доходчиво почитать об этом , буду признателен
@nikopapchenko3726
@nikopapchenko3726 3 жыл бұрын
Народ подскажите. Все делал как по видео, но не отправляет сообщения в форме пользователя, что может быть?
@kajmankaiman4896
@kajmankaiman4896 3 жыл бұрын
Знает кто, как автор сделал так, чтобы у него на 11:30 в логе сокета выводился именно наш энтити пользователя, а не просто id?
@andreyguzik2675
@andreyguzik2675 6 жыл бұрын
Ванну нужно закрывать :)
@letsCodeDru
@letsCodeDru 6 жыл бұрын
Тогда кот начинает туда громко ломиться))
@andreyguzik2675
@andreyguzik2675 6 жыл бұрын
Со временем отвыкнет ^_^
@noyklgd4403
@noyklgd4403 6 жыл бұрын
связывай его скотчем)
@trygoboi4790
@trygoboi4790 4 жыл бұрын
Здравствуйте. Может кто нибудь поможет с моим вопросом. Так вот вопрос, как сделать обмен сообщениями по конкретному URL. То есть допустим у меня сайт находится на localhost:8080. И я хочу чтобы мой чат через WebSocket открывался только по URL "localhost:8080/chat". Как это сделать? Пробовал @RequestMapping("/chat"). Все равно все открывается на главной странице localhost:8080. Писал по официальному гайду от Спринга. Тут у автора тоже приложение работает на localhost:9000 без дополнительных слов в URL. Надеюсь понятно задал вопрос, заранее большое спасибо
@r199971
@r199971 5 жыл бұрын
Почему не ajax? Что тебе так не нравиться Jquery?)
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Jquery провоцирует плохую архитектуру
@vjotov
@vjotov 5 жыл бұрын
@@letsCodeDru расскажите как нибудь почему и что с Angular и React хуже чем Vue
@letsCodeDru
@letsCodeDru 5 жыл бұрын
@@vjotov с ними всё так. Просто мне больше Vue нравится. На работе использую React. Нынешний ангуляр (2) использовал еще когда он был в глубокой альфе.
@СашаБатькович-р9ы
@СашаБатькович-р9ы 5 жыл бұрын
@@letsCodeDru а что делаете ?
@oskinnick
@oskinnick 2 жыл бұрын
Автор, Спасибо огромное! Однако вопрос: при отработке кнопки редактирования в базу тупо добавляется новый Message. sout в контроллере @MessageMapping выводит принятый мессадж без Id. При этом, в консоли хрома отправка айдишника таки происходит... В каком месте Может быть ошибка? Мяф)
@letsCodeDru
@letsCodeDru 2 жыл бұрын
Сложно такое диагностировать через комменты тут. Приходи в чат, там скопом разберемся
@oskinnick
@oskinnick 2 жыл бұрын
@@letsCodeDru Привет!) В чат заходил, кое-что подсказали) Трабл оказался в итоге связан с @MessageMapping - зараза отказывается конвертить Айди из ДжСона. В результате обошел засаду с помощью гiмна та палок - повытаскивал данные руками из JSONObject %)). Однако если ты не против - можно таки поспилкувацца через личку? (Оч хочется разобраться)
@axrorbekkuchkarov4146
@axrorbekkuchkarov4146 4 жыл бұрын
Здрасвуйте мне надо jwt + websocket, свой укзампл нету? откуда мне искать ? pls help me
@letsCodeDru
@letsCodeDru 4 жыл бұрын
Ещё пока нету. В перспективе должен появиться
@ayrat11
@ayrat11 3 жыл бұрын
Которое видео уже подряд практически ничего по спрингу - один фронтенд на джаваскрипте. Переименуйте уже тогда уроки в изучение фронта.
@СтаниславБарышников-у6е
@СтаниславБарышников-у6е 6 жыл бұрын
Спасибо за отличное видео!
@D.P._
@D.P._ 5 жыл бұрын
Спасибо! Отличный и лаконичный материал!
@D.P._
@D.P._ 5 жыл бұрын
Спасибо! Отличный и лаконичный материал!
@D.P._
@D.P._ 5 жыл бұрын
Спасибо! Отличный и лаконичный материал!
@D.P._
@D.P._ 5 жыл бұрын
Спасибо! Отличный и лаконичный материал!
@D.P._
@D.P._ 5 жыл бұрын
Спасибо! Отличный и лаконичный материал!
@D.P._
@D.P._ 5 жыл бұрын
Спасибо! Отличный и лаконичный материал!
@D.P._
@D.P._ 5 жыл бұрын
Спасибо! Отличный и лаконичный материал!
Don't Use Websockets (Until You Try This…)
6:46
Code With Ryan
Рет қаралды 301 М.
WORLD BEST MAGIC SECRETS
00:50
MasomkaMagic
Рет қаралды 35 МЛН
Транзакции - Spring Framework в деталях
1:20:21
Уголок сельского джависта
Рет қаралды 24 М.
Websocket в Spring Boot
22:49
Интабия
Рет қаралды 3,2 М.
Кто и почему убивает Фронтенд?
20:40
Миша Ларченко
Рет қаралды 24 М.
Что такое веб-сокеты за 4 минуты
4:36
Публикация на Heroku. Spring Boot Rest
14:08
letsCode
Рет қаралды 35 М.