Тёмный

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

letsCode
Подписаться 46 тыс.
Просмотров 50 тыс.
50% 1

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/...

Опубликовано:

 

29 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 89   
@dreamer_vi905
@dreamer_vi905 Год назад
Видосу уже скоро пять лет, но всё ещё полезный. Спасибо)
@ФедорШморгилов
@ФедорШморгилов 5 лет назад
Андрей, большое спасибо за все твои видео, отлично объясняешь!
@YuretsUA
@YuretsUA 4 года назад
Ни один урок не обходится без последствий, если просто выполнить особо не вдумываясь то ничего не отложится. Я вот попытался разобраться, застрял на 2 часа, никак не мог понять что происходить в handlers, все виной тому, что в java не сталкивался с функциональным программированием, и только потом понял что в handlers ложатся не объекты, а функции которым в последствии передаются сообщения из сервера, зачем такая примудрость пока не разобрался (в будущем думаю пойму) но блин в мозгу отложилось надежно. В очередной раз спасибо за видео, в каждом новом уроке новая технология, которая заставляет разбираться и развиваться. Удачи автору.
@АлександрМоскаленков-з6й
Спасибо тебе, добрый человек. Тоже голову ломал над этим.
@fjgdkfjghksjdfhg
@fjgdkfjghksjdfhg 9 месяцев назад
На одном дыхании
@nikitaantonenko3287
@nikitaantonenko3287 5 лет назад
Андрей спасибо огромное!!!))) Обожаю ваш канал!!))) Всегда очень интересные темы!!!)))))
@IvanIvanov-oi5nx
@IvanIvanov-oi5nx 6 лет назад
Круть крутяшная!!!!! Респект, вот чего хотелось-то попробовать))) С нетерпением жду продолжения!!!
@МихаилШарашин-ъ2ъ
Большое спасибо и и жирный лайк за видео! По образу и подобию сделал удаление сообщений, всё работает
@АлександрМ-т1й
@АлександрМ-т1й 4 года назад
скинь код, как удаление реализовал, пожалуйста
@VASY1PUPKIN2
@VASY1PUPKIN2 6 лет назад
Аффтар я тебя люблю в хорошем смысле этого слова!!
@vjotov
@vjotov 5 лет назад
14:00 - в каком моменте и как мы настроили mapping путей? 16:50 - можно ролик с бэкстейджа - как вычислили что именно там ошибка? у меня опечатка получилась - в MessageController вместо аннотация @MessageMapping("/changeMessage") была changeMassage. есть вариянт заставить спринг писать в консоль, когда кто то не туда стучится? как при классическим REST когда не найден mapping?
@artsbrand
@artsbrand 5 лет назад
крутая технология!!! а мы поллинги и пушинги юзали ) спасибо!
@АлександрБугримов-о1е
Вообще супер видео! Спасибо.
@D.P._
@D.P._ 4 года назад
Спасибо! Как всегда годные уроки. всегда есть что-то новое. иногда понятное иногда совсем нет, но всегда интересно
@antonfedoruk1037
@antonfedoruk1037 4 года назад
Ахах, досматривайте видео до последней секунды! Оно того стоит :)
@D.P._
@D.P._ 5 лет назад
Спасибо! Отличный и лаконичный материал!
@maksimdidukh6114
@maksimdidukh6114 4 года назад
От души душевно в душу (ↄ).
@bek2074
@bek2074 5 лет назад
Чтобы пройти это урок нужно разобраться в уроке "Настраиваем Webpack", который ссылается на урок "Webpack - сборщик web приложений", который ссылается на урок "Node.js: NPM - пакетный менеджер"...
@davronsherbaev9133
@davronsherbaev9133 4 года назад
Ну, как бы это нормально)
@fedorivanhoe3266
@fedorivanhoe3266 2 года назад
А у меня и так всё работает, мне вообще gulp больше нравится
@noyklgd4403
@noyklgd4403 6 лет назад
Автору очередные плюсы к карме)
@ИльяСиротин-ф3ф
@ИльяСиротин-ф3ф 6 лет назад
Ну как всегда лойс)
@AnnaSmirnova1
@AnnaSmirnova1 4 года назад
Аладунь! Спасибо огромное!!!!
@letsCodeDru
@letsCodeDru 4 года назад
Сразу видно, кто стримы не пропускает XD
@Elvolvers
@Elvolvers 4 года назад
Спасибо! Кстати для поиска различий между файлами можно использовать Araxis Merge, например.
@vladvlad8839
@vladvlad8839 4 года назад
Супер круто!
@victormog
@victormog 6 лет назад
Респект!
@МихаилСмирнов-к3р
Вопрос по уроку Bean Validation: Если по одному полю срабатывает сразу два условия валидации, как в этом случае получить список ошибок? При использовании коллекции Map выскакивает ошибка, т.к. появляется второй дублирующий ключ.
@Sulf8
@Sulf8 4 месяца назад
за grep console спасибо)
@psvm_channel
@psvm_channel Год назад
Подскажите, как проксировать трафик по вебсокет протоколу в спрингбут приложении? У меня на проекте микросервисная архитектура, в качестве входной точки используется спринг бут приложение, которое аутентифицирует запросы с клиента и проксирует их в другие модули. Между браузером и одним из внутренних модулей нужно установить веб сокет соединение. Подскажете какие-нибудь способы?
@anzheoneanzeone1095
@anzheoneanzeone1095 5 лет назад
Андрей , спасибо! вопрос у меня такой, сколько раз вы это делали и какое время лично вам нужно чтобы изучить и внедрить что -то новое (даже на примере webcoket, security). Дело в том, что я уже неделю не могу сделать ))) вот хочу понять один я такой или нас много, как быть если начальство скажет сделать такое, а тут такие заторы)
@letsCodeDru
@letsCodeDru 5 лет назад
Когда учился тоже нихренаж не работало. Сейчас уже опыт есть, могу гораздо быстрее разобраться. Это как с машиной: начинаешь на одной и ездишь еле-еле. А потом, с опытом, пофиг на какой и достаточно хорошо катаешь
@VladShtaiier
@VladShtaiier Год назад
Привет, а обязательно что-бы месседж был именно текстом? Нельзя например сделать вместо просто текста какой-то типу пост, в котором есть титулка, тело и тд. Делая тем самым что-то по типу ленты, которую можно скролить
@nailsaggitarius4212
@nailsaggitarius4212 4 года назад
Зря сделали "по-молодежному" теперь затруднения как собрать ваш проект, если например нужно hibernate, который я собрал по вашему же видео и websocket, который теперь собирается совершенно иначе. Слишком крутой входной порог вы сделали.. Извините, конечно, видео отличные, очень доходчивые.
@ВладиславМелехин-е5р
В конце песня отладчика: "Какого хера, какого хера..." :D
@dmitrysomsin2117
@dmitrysomsin2117 4 года назад
Спасибо, но это первое видео в котором я не понял 60% информации)
@bassturbatorark
@bassturbatorark 4 года назад
Удаленные месседжи не пропадают у другого юзера без перезагрузки страницы
@kajmankaiman4896
@kajmankaiman4896 3 года назад
Знает кто, как автор сделал так, чтобы у него на 11:30 в логе сокета выводился именно наш энтити пользователя, а не просто id?
@oskinnick
@oskinnick 2 года назад
Автор, Спасибо огромное! Однако вопрос: при отработке кнопки редактирования в базу тупо добавляется новый Message. sout в контроллере @MessageMapping выводит принятый мессадж без Id. При этом, в консоли хрома отправка айдишника таки происходит... В каком месте Может быть ошибка? Мяф)
@letsCodeDru
@letsCodeDru 2 года назад
Сложно такое диагностировать через комменты тут. Приходи в чат, там скопом разберемся
@oskinnick
@oskinnick 2 года назад
@@letsCodeDru Привет!) В чат заходил, кое-что подсказали) Трабл оказался в итоге связан с @MessageMapping - зараза отказывается конвертить Айди из ДжСона. В результате обошел засаду с помощью гiмна та палок - повытаскивал данные руками из JSONObject %)). Однако если ты не против - можно таки поспилкувацца через личку? (Оч хочется разобраться)
@GrishaObrazcovV
@GrishaObrazcovV 6 лет назад
Когда продолжение будет?
@mizantropoff
@mizantropoff 3 месяца назад
В общем , плохо раскрыта тема с маппингами, все эти /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 года назад
Народ подскажите. Все делал как по видео, но не отправляет сообщения в форме пользователя, что может быть?
@vladislavosipenkov1412
@vladislavosipenkov1412 6 месяцев назад
А нет видео где stomp но вместо фронта - postman?
@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 привет. Пожалуйста. Можешь примерно объяснить как реализовывал удаление? И скажу, при удаление, другой пользователь видит это удаление без перезагрузки или только после перезагрузки?
@trygoboi4790
@trygoboi4790 4 года назад
Здравствуйте. Может кто нибудь поможет с моим вопросом. Так вот вопрос, как сделать обмен сообщениями по конкретному URL. То есть допустим у меня сайт находится на localhost:8080. И я хочу чтобы мой чат через WebSocket открывался только по URL "localhost:8080/chat". Как это сделать? Пробовал @RequestMapping("/chat"). Все равно все открывается на главной странице localhost:8080. Писал по официальному гайду от Спринга. Тут у автора тоже приложение работает на localhost:9000 без дополнительных слов в URL. Надеюсь понятно задал вопрос, заранее большое спасибо
@axrorbekkuchkarov4146
@axrorbekkuchkarov4146 4 года назад
Здрасвуйте мне надо jwt + websocket, свой укзампл нету? откуда мне искать ? pls help me
@letsCodeDru
@letsCodeDru 4 года назад
Ещё пока нету. В перспективе должен появиться
@r199971
@r199971 5 лет назад
Почему не ajax? Что тебе так не нравиться Jquery?)
@letsCodeDru
@letsCodeDru 5 лет назад
Jquery провоцирует плохую архитектуру
@vjotov
@vjotov 5 лет назад
@@letsCodeDru расскажите как нибудь почему и что с Angular и React хуже чем Vue
@letsCodeDru
@letsCodeDru 5 лет назад
@@vjotov с ними всё так. Просто мне больше Vue нравится. На работе использую React. Нынешний ангуляр (2) использовал еще когда он был в глубокой альфе.
@СашаБатькович-р9ы
@@letsCodeDru а что делаете ?
@andreyguzik2675
@andreyguzik2675 6 лет назад
Ванну нужно закрывать :)
@letsCodeDru
@letsCodeDru 6 лет назад
Тогда кот начинает туда громко ломиться))
@andreyguzik2675
@andreyguzik2675 6 лет назад
Со временем отвыкнет ^_^
@noyklgd4403
@noyklgd4403 6 лет назад
связывай его скотчем)
@ayrat11
@ayrat11 4 года назад
Которое видео уже подряд практически ничего по спрингу - один фронтенд на джаваскрипте. Переименуйте уже тогда уроки в изучение фронта.
@СтаниславБарышников-у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 лет назад
Спасибо! Отличный и лаконичный материал!
Далее
ДУБАЙСКАЯ ШОКОЛАДКА 🍫
00:55
Просмотров 2,9 млн
Websocket в Spring Boot
22:49
Просмотров 3,3 тыс.
Транзакции - Spring Framework в деталях
1:20:21