Знакомство с WebSocket

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ส.ค. 2024
  • WebSocket - это относительно новая и очень интересная технология, позволяющая реализовать двусторонний обмен данными между клиентом и сервером, в режиме реального времени.
    В этом уроке мы познакомимся с WebSocket на примере простого чата.
    Исходный код на GitHub: github.com/cod...

ความคิดเห็น • 118

  • @personamems
    @personamems 4 ปีที่แล้ว +12

    Спасибо! Один из лучших уроков по теме! Очень эффектное оформление клиента и в тоже время очень простое.

  • @user-mw6lr7hl9i
    @user-mw6lr7hl9i 6 หลายเดือนก่อน

    Классный урок, спасибо) Ломал себе голову в одном месте, сообщения не отправлялись, но в комментах объяснили в чём дело

  • @jolly_dev
    @jolly_dev 5 ปีที่แล้ว +10

    Спасибо за начальные знания, далее будем изучать сами. Отличное видео!

  • @ful_kush
    @ful_kush 2 ปีที่แล้ว

    Слишком просто для темы, которой я боялся )
    Благодарю за то, что ёмко и без воды

  • @sashashad
    @sashashad ปีที่แล้ว

    Видео требует некоторого бэкграунда, но в целом очень полезно. Если с кодом хоть немного работали то всё очень ясно.
    Спасибо!

  • @user-oh5vo5rj6y
    @user-oh5vo5rj6y 3 ปีที่แล้ว +1

    Благодарю за информативное видео. Всё четко, ясно и по делу

  • @vasiliykrush2150
    @vasiliykrush2150 4 ปีที่แล้ว +3

    Голос хороший и все понятно, буду смотреть и другие ролики;)

  • @19n1ght
    @19n1ght 6 ปีที่แล้ว +7

    Спасибо, хорошее видео!
    Было бы интересно послушать про JSON-RPC, как альтернативу REST API.

    • @paulbolhar921
      @paulbolhar921 5 ปีที่แล้ว +1

      Причем сегодня)))

    • @finishsuffering
      @finishsuffering 2 ปีที่แล้ว +3

      @@paulbolhar921 и сегодня))))

    • @finishsuffering
      @finishsuffering ปีที่แล้ว +1

      и сегодня)

  • @mikhail-zotchik
    @mikhail-zotchik 4 ปีที่แล้ว +2

    Огромное спасибо за видео!

  • @boss-rus
    @boss-rus ปีที่แล้ว

    круто. коротко, ясно и работает :)

  • @apexlegendsnemez
    @apexlegendsnemez ปีที่แล้ว

    СУПЕР РОЛИК !!!

  • @cassinid8843
    @cassinid8843 5 ปีที่แล้ว +2

    Спасибо, очень доступно.

  • @user-pr4er2ly7f
    @user-pr4er2ly7f 4 ปีที่แล้ว +7

    какой приятный английский

  • @volodymyrdonets4166
    @volodymyrdonets4166 5 ปีที่แล้ว +1

    Спасибо чувак ты лучший!
    Нашёл пример кода не запускается (влом разбираться, опыта разработки JavaScript, Node.js и прочей не канонической мути нет, а сервер на WebSocket-ах сам себя не запустит).
    спустя 1.24 мин нахожу комманду npm install --save ws и вкинул библиотеку WebSocket-ов и Node.js запахал.
    Хацкер в деле)

  • @andyanderson222
    @andyanderson222 2 ปีที่แล้ว

    Классный урок! Спасибо!

  • @rugeneus
    @rugeneus 3 ปีที่แล้ว +1

    Круто! Класс!

  • @user-hp5hw8su8q
    @user-hp5hw8su8q 5 ปีที่แล้ว +1

    Спасибо, отличное видео 👍

  • @yuragorb4220
    @yuragorb4220 4 ปีที่แล้ว +6

    Все сделал как на видео, но когда ввожу в строку браузера - localhost:8080, открывается Index of/. В чем может быть проблема?

  • @elvinmammadov8584
    @elvinmammadov8584 2 ปีที่แล้ว +3

    i run command http-server , but error occurred : http-server : The term 'http-server' is not recognized as the name of a cmdlet, function, script file, or operable
    program

  • @user-mo6fr4ex8q
    @user-mo6fr4ex8q 3 ปีที่แล้ว +1

    Кайф, спасибо!

  • @sergejsviridov141
    @sergejsviridov141 2 ปีที่แล้ว +1

    как сделать чтобы веб сокет общался отдельно с каждым клиентом в пределах id клиента? т е чтобы отдельный клиент открыв два экземпляра страницы в разных браузерах мог через каждую из этих страниц в отдельности управлять событиями на обеих страницах?

  • @imbaquad
    @imbaquad 4 ปีที่แล้ว +1

    Отлично поданный урок. Все четко и ясно. Скажите, приемлемо ли использовать вебсокеты в чатах, предположим, в 100к и более онлайн пользователей? или тут лучше что-то другое рассмотреть? Спасибо!

  • @ixtirochiavlodlar
    @ixtirochiavlodlar 6 ปีที่แล้ว

    Классный урок

  • @inji4579
    @inji4579 2 ปีที่แล้ว

    Не выдержал в конце, таки написал adsdfsd)))

  • @lessons3141
    @lessons3141 ปีที่แล้ว

    супер

  • @aktotuttttt
    @aktotuttttt 2 ปีที่แล้ว +2

    @CodeDojo почему мне возвращает [Object Blob] ??? Как починить?

    • @devope
      @devope 2 ปีที่แล้ว +1

      client.send(message.toString());

    • @user-sj7pm8cr4h
      @user-sj7pm8cr4h ปีที่แล้ว

      @@devope Спасибо

  • @maxgambler4983
    @maxgambler4983 2 ปีที่แล้ว

    Вкладывать обработчик message в обработчик connect не только не нужно, но и вредно, так как при автоматическом переподключении вы задвоите обработчик message

  • @TeaWillHelp
    @TeaWillHelp ปีที่แล้ว

    Спасибо ^_^

  • @fnShun
    @fnShun 5 ปีที่แล้ว +5

    Кто может разъяснить несколько моментов: зачем используется http-server, если, как говорят источники, WebSocket работает поверх TCP. Какое отношение app.js имеет к http-server? И как общение происходит на порту 8080, если был указан 3000. Спасибо заранее)

    • @batradzbazzaev
      @batradzbazzaev 2 ปีที่แล้ว +2

      3000 это порт вебсокета на сервере. 8080 это http порт. При открытом соединении 3000 порт перехватывает http запрос и обрабатывает его

  • @faramozayw1654
    @faramozayw1654 5 ปีที่แล้ว +2

    Можно просто написать: npm i --save ws . Где-то читал, что npm i ws будет делать то же, что и npm i --save ws, но первый вариант куда короче

    • @hakooplayplay3212
      @hakooplayplay3212 4 ปีที่แล้ว

      save уже не нужен, npm сохраняет зависимости по дефолту

  • @ryzhovdtv
    @ryzhovdtv 5 ปีที่แล้ว +1

    Спасибо за видео, когда попробовал первый раз на десятке все работало, а сейчас когда захожу на localhost:8080 выдает ERR-INVALID_REDIRECT, не подскажите как решить?

  • @user-nn6mb9tv1b
    @user-nn6mb9tv1b 3 ปีที่แล้ว +1

    одно непонятно а причем тут форма -- а если я просто хочу отправить какой нить инпут без формы или вааще чо то отправить по событию

  • @vesh95
    @vesh95 5 ปีที่แล้ว +2

    Веб сокеты - относительно новая технология)))
    Насколько я помню еще на первом курсе чат на них писал. Но всеравно это не первое появление.

    • @codedojo
      @codedojo  5 ปีที่แล้ว

      Сравнивая с HTTP, WS относительно новая технология.

  • @alexUnion
    @alexUnion 5 ปีที่แล้ว

    Полезный урок...и качественный

  • @maniakm897
    @maniakm897 5 ปีที่แล้ว +2

    А к этому серверу можно подключится например через другой ПК, который находиться в одной локальной сети с хостом-ПК (на нем запущен сервер) путем ввода в браузере серого IP адреса хоста и потом через : номер порта - 8080 ?

    • @eldarkhaitov6728
      @eldarkhaitov6728 4 ปีที่แล้ว

      Да, но надо сначала открыть порт 8080 на локальную сеть

  • @gigabek
    @gigabek 6 ปีที่แล้ว +2

    Видео хорошее, но у меня вопросы (они больше относятся к бэкэнду). В каком виде у тебя отправляются/приходят сообщения - JSON, XML? Также для истории сообщений нужна БД. В своем примере, я использую Redis, но он занимает RAM и допустим мое приложение в деплое, то мой сервер упадет если будет много клиентов. Собственно как с Redis'а переместить историю в БД, и чтоб он фетчил данные или использовать другую БД?

    • @user-km5bs4tg2o
      @user-km5bs4tg2o 5 ปีที่แล้ว

      Блин как мне интересен этот вопрос тоже... Нашел решения?

    • @YukimuraChristian
      @YukimuraChristian 5 ปีที่แล้ว

      Там просто создается по сокету элемент li на html страничке, его значение хранится в переменной value, и при вызове кидает на html новые value и обнуляется).
      Никакой бд там нет. И не всегда нужна бд. На подобную деятельность будет рациональнее структуру данных запилить, аля стека. Либо читать с txt. Ну и да, дальше если начинать извращаться то JSON, CSV и т.п.

  • @GrafAlexder13
    @GrafAlexder13 4 ปีที่แล้ว

    свойство clients , где о нём можно прочитать? Как и где можно узнать какие свойства есть у ws ?

  • @singlebw4065
    @singlebw4065 4 ปีที่แล้ว

    Кажется я не понимаю что такое сервер. Я сижу в ковыряю React (запущенный сервер) так же использую бэкенд на express (запущенный сервер). Обратиться к бд использую OpenServer (запущенный сервер) :)) вот я вижу WebSocket и требуется создать сервер. Я вижу что посылаются запросы и приходит ответ, но понять как это устроено и что за магия твориться мне не понятно. Точнее я не задумывался глубоко. У меня в мыслях просто разделение фронтенд и бэкенд и возникает вопрос если у меня запущен localhost:4000 на express, то WebSocket можно ли завязать на этот скажем так сервер? Ткните носом где я не понимаю

  • @glockwilder5973
    @glockwilder5973 4 ปีที่แล้ว +2

    сначала написало в терминале что http-server нет такой команды. потом установил через нпм install http-server все прикрасно вроде все работает но после того я зашел в браузер на localhost:8080 и мне открыло index of/ и там мои файлы. Братик что за ошибка

    • @yuragorb4220
      @yuragorb4220 4 ปีที่แล้ว

      У меня точно также.

    • @Blenberg
      @Blenberg 2 ปีที่แล้ว

      Кто нибудь нашел ошибку?

  • @miralirafiyev4646
    @miralirafiyev4646 6 ปีที่แล้ว +9

    Полезныый урок но для тех кто впервые знает про сокеты. Все каналы показывают одно и тоже простое отправка смски . Никто не снимает уроки как создать приватные комнаты для чата и так далее, это же можно делать сокетами.

    • @user-tp7ie7ei5t
      @user-tp7ie7ei5t 5 ปีที่แล้ว +2

      причем тут приватные комнаты чата к пояснениям сетевого протокола

  • @grot9017
    @grot9017 5 ปีที่แล้ว +1

    почему мы подключаем модуль через директиву require, а не import? Чтобы это сделать нам нужно было бы дополнительно подключить babel?

    • @codedojo
      @codedojo  5 ปีที่แล้ว +1

      Да, кроме модулей в Node.js можно использовать все остальные нововведения без Babel. Не вижу большого смысла включать его в проект только ради import/export.

  • @danixpuh7073
    @danixpuh7073 3 ปีที่แล้ว +2

    Есть большая проблема: почему когда я отправляю на сервер сообщение "Hello", назад я получаю [objectBlob]?

    • @user-kr9xx5cr9b
      @user-kr9xx5cr9b 2 ปีที่แล้ว +4

      client.send(message.toString()); при отправке сообщения с сервера. Может кому еще пригодиться кто делать будет.

    • @danixpuh7073
      @danixpuh7073 2 ปีที่แล้ว

      @@user-kr9xx5cr9b Спасибо огромное! Очень помогло! Прям выручили)

    • @user-kr9xx5cr9b
      @user-kr9xx5cr9b 2 ปีที่แล้ว

      @@danixpuh7073 Пожалуйста! Считаю что таким нужно делится всегда! Очень часто по началу сталкивался с вопросами и ответа приходилось искать очень долго. А так, мне не сложно, сам разобрался и написал. Добро всегда добром вернётся! Успехов!

    • @finishsuffering
      @finishsuffering 2 ปีที่แล้ว

      @@user-kr9xx5cr9b почему вы удалили сообщение, где помогли?

    • @user-kr9xx5cr9b
      @user-kr9xx5cr9b 2 ปีที่แล้ว

      @@finishsuffering самое первое сообщение в ветке

  • @kilirlink.....8012
    @kilirlink.....8012 5 ปีที่แล้ว

    делаем через cordova клиент и кайфуем

  • @danixfax9800
    @danixfax9800 3 ปีที่แล้ว

    Не работает вообще, указывает в файле server.js на первую строку на document, принимает как за ошибку, почему так?

  • @Quassar18
    @Quassar18 3 ปีที่แล้ว +24

    Плохой гайд. Автор упустил важные моменты: где взять глобальную команду http-server? Ответ: данный модуль можно установить глобально командой npm install --global http-server . Откуда берется веб страница и стиль для нее? Ответ: Автор просто решил скипнуть этот момент, страница и стили лежат в папке public на гитхабе по сссылке из видео. Если тупо следовать видео, то ничего не заработает. При этом при первом запуске http-server может возникнуть ошибка прав доступа к выполнению сценариев. Чтобы установить нужную политику введите Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

    • @elkub
      @elkub 3 ปีที่แล้ว +4

      святой человек, спасибо тебе!

    • @zhuvachkabubulgum7487
      @zhuvachkabubulgum7487 3 ปีที่แล้ว +2

      +++ видео ни о чем 💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩💩

    • @sashashad
      @sashashad ปีที่แล้ว

      @@zhuvachkabubulgum7487 да ладно

    • @iMarkusUS
      @iMarkusUS ปีที่แล้ว

      Автор и вовсе закрыл свои гениальные исходники

  • @rolton6307
    @rolton6307 2 ปีที่แล้ว +2

    что делать если команда http-server не работает

    • @devope
      @devope 2 ปีที่แล้ว +1

      npm install -g http-server

  • @user-kv4lt7dn4d
    @user-kv4lt7dn4d 6 ปีที่แล้ว

    Гайз, у меня возникла небольшая проблема, в видео решения я не нашёл. При обновлении страницы чат перестает функционировать, никто не поможет?

  • @mistersandman6556
    @mistersandman6556 5 ปีที่แล้ว +5

    ничего не работает, всё делаю как у видео, но после запуска сервера и клиента ничего не происходит..

  • @kostobot
    @kostobot 6 ปีที่แล้ว +1

    Найс канал. Есть ли смысл писать чат на чистых вебсокетах или лучше использовать фреймворк, например Express?

    • @ccc3948
      @ccc3948 6 ปีที่แล้ว +2

      Я бы написал на чем-то вроде socket.io - быстрее и надежнее

    • @Graf777gos
      @Graf777gos 6 ปีที่แล้ว

      express + socket.io; koa + socket.io, в любом случае нужен еще http сервер; Лучше не использовать браузерные WebSockets, так как в них нет много нужно функционала, который реализован в socket.io (например)

  • @Yura3zzz
    @Yura3zzz 6 ปีที่แล้ว +2

    Что насчёт авторизации, аутентификации? Например я хочу через вебсокеты подключиться к внешней системе, которая выдала мне логин и пароль. Я же не могу пароль просто прописать в js на сайте. Как его можно спрятать?

    • @LiguidCool
      @LiguidCool 6 ปีที่แล้ว

      У вас же пользователь не отсылает КАЖДЫЙ раз пароль при запросе страниц? Авторизация идет по кукису например. Тут подход тот же - у клиента есть id сессии, полученный при логине например, и оно же хранится на сервере.

    • @Yura3zzz
      @Yura3zzz 6 ปีที่แล้ว

      Вся проблема в том, что сервис не мой IBM , а страница моя. И куки тоже мои. IBM выдал креденшинл, который надо прописать в js чтоб общаться через mqtt over websosket. Вот куда их запихнуть, ума не приложу. Так чтоб при просмотре исходного кода страницы не было видно.
      Гугл как-то ж делает без сессии

    • @ccc3948
      @ccc3948 6 ปีที่แล้ว +1

      Если ваш ключ секретный, то запихнуть только на ваш сервер. Что-то вроде: страница -> [ws server -> ws client on server] -> ws server ibm
      - в скобках - то, что на ваашем сервере, там же и приватній ключ хранить

  • @torodinson5260
    @torodinson5260 4 ปีที่แล้ว

    а зачем было через http-сервер запускать ? чтоб не обрабатывать гет и пост запросы ? через порт 3000 не запустился файл .

  • @hmmm1482
    @hmmm1482 4 ปีที่แล้ว +1

    Как на линуксе вебсокеты установить? npm install --save ws не работает

    • @shohijahonaxmetov
      @shohijahonaxmetov 2 ปีที่แล้ว +1

      Sperva nujno ustanovit sam npm. Ustanovi nodejs s oficialnogo sayta v komplekte idet i npm

  • @akkaynt8910
    @akkaynt8910 ปีที่แล้ว

    Слушает порт 3000 а переходит по 8080, почему?

  • @shahzodtadjiyev4128
    @shahzodtadjiyev4128 2 ปีที่แล้ว

    Спасибо за знание но server.js пустой
    же на гите

  • @hiphopik9185
    @hiphopik9185 3 ปีที่แล้ว

    Лайк поставил. Ввожу node server всё норм ,но http-server - вот http-server' is not recognized as an internal or external command,
    operable program or batch file

    • @codedojo
      @codedojo  3 ปีที่แล้ว

      http-server это отдельный модуль, который нужно предварительно установить. Решить проблему можно с помощью команды `npx http-server`. npx - это утилита, которая сама установит и запустит npm модуль.

  • @yennms5547
    @yennms5547 2 ปีที่แล้ว

    Это конечно круто все, но вам настолько лень запушить файл server.js, а не оставлять его пустым?)

  • @user-uy5ws9fc4n
    @user-uy5ws9fc4n 4 ปีที่แล้ว

    Уважаемые, кто подскажет, как развернуть на реальном сервере? Не понимаю, как открыть порт на Nginx.

  • @cyberblogru
    @cyberblogru 6 ปีที่แล้ว

    Подскажите, пожалуйста, какой шрифт используется в демке? Он бы мне очень пригодился.

    • @codedojo
      @codedojo  6 ปีที่แล้ว

      +Денис Каримов Это Consolas

  • @user-kv4lt7dn4d
    @user-kv4lt7dn4d 6 ปีที่แล้ว

    Ребят, вопрос довольно глупый, но хоть убей не понимаю, где он подключает html и css?

    • @user-li1ij1hv1c
      @user-li1ij1hv1c 6 ปีที่แล้ว +2

      Здесь показаны только js файлы, тоесть файлы скриптов. В частности он подключает app.js через тег в html файле, а не в скрипты подключает html, просто этого нет на видео)

    • @alexanderblagirev4937
      @alexanderblagirev4937 4 ปีที่แล้ว

      Обрати внимание на момент где автор выбирает getElementbyId...вот за этим и творится магия) он их не показал. Они просто в проекте лежат вместе с данным жсниками

  • @temka_sd
    @temka_sd 5 ปีที่แล้ว

    Здравствуйте. А можно как-то запустить websocket server из браузера?

  • @turtrueweb
    @turtrueweb 3 ปีที่แล้ว

    +

  • @nordeveloper
    @nordeveloper 5 ปีที่แล้ว

    Скачал с github файл сервер почему то пустой и там половина года нету

  • @elliotraven4509
    @elliotraven4509 5 ปีที่แล้ว +1

    Автор канала, у тебя на сайте не работает функционал оформления подписки((((( плак плак

    • @codedojo
      @codedojo  5 ปีที่แล้ว

      Будьте добры пояснить в чём именно проблема.

    • @elliotraven4509
      @elliotraven4509 5 ปีที่แล้ว

      @@codedojo думал оформить подписку но при клике ничего не происходило. В консоль вроде что то вылетало, но сейчас не вспомню что...

    • @user-jl8mb3fp9p
      @user-jl8mb3fp9p 5 ปีที่แล้ว

      @@codedojo аналогичная ситуация с регистрацией через соц сеть

  • @alexeysukhinin8036
    @alexeysukhinin8036 4 ปีที่แล้ว

    А что... Коротко и только по теме.

  • @sresetnjak
    @sresetnjak 5 ปีที่แล้ว +2

    На гитхабе server.js пуст.

    • @YukimuraChristian
      @YukimuraChristian 5 ปีที่แล้ว

      Там и app не написан вообще. Гитхаб ради галочки выложен был похоже.

    • @volodymyrlehenkyi7207
      @volodymyrlehenkyi7207 4 ปีที่แล้ว

      @@YukimuraChristian Написано ведь, исходники)

    • @SK-KS
      @SK-KS 2 ปีที่แล้ว

      Добрый человек повыше в чате выложил исходники на свой Гит Хаб

  • @user-gk3ke7dx2x
    @user-gk3ke7dx2x 5 ปีที่แล้ว

    нихрена не работает

    • @user-ze7wo4et9v
      @user-ze7wo4et9v 4 ปีที่แล้ว

      А тебе не кажется, что дело в тебе?

  • @Animalfox
    @Animalfox 5 ปีที่แล้ว +1

    Урок не полный.
    Имя "http-server" не распознано как имя командлета, функции, файла сценария или выполняемой программы.

    • @ILikeCherryJam
      @ILikeCherryJam 5 ปีที่แล้ว

      Команда в терминале "npm i http-server -g"

    • @ixtirochiavlodlar
      @ixtirochiavlodlar 4 ปีที่แล้ว

      @@ILikeCherryJam ошибка npm Error

  • @vladvladov4095
    @vladvladov4095 3 ปีที่แล้ว

    чувак ну ты просто надиктовал какую то херь - где тут знакомство бл?..

  • @devope
    @devope 2 ปีที่แล้ว

    Финальная версия проекта github.com/devope-learn/websocket-intro/tree/fixes

    • @sashashad
      @sashashad ปีที่แล้ว

      самая полезная ссылка!
      😀

  • @BoffkaBoffka
    @BoffkaBoffka 3 ปีที่แล้ว

    С П А С И Б О ! ! !