WebSocket сервер на Node.js (электронные таблицы и чат)

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ส.ค. 2024
  • Вебсокеты: github.com/How...
    Чат: github.com/How...
    Курс «Основы программирования» с примерами на JavaScript habr.com/ru/po...
    #сокеты #вебсокеты #nodejs #чат #лекции #программирование #js

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

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

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

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

    Спасибо, за супер подробный вводный урок в веб соккеты! Все наглядно и по-сути :)

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

      Есть еще много другого: th-cam.com/users/TimurShemsedinovvideos

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

    У меня почему-то в этом примере в НЕактивном клиенте (окне чата) сообщение от другого клиента приходит в виде [object Blob]. Код я скопировал с репозитория. Вебсокеты стоят последней версии 8.2.1

  • @user-me2fl8ej1h
    @user-me2fl8ej1h 4 ปีที่แล้ว +5

    Посилання "Вебсокеты" та "Чат" переставлені місцями

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

    Подскажите, пожалуйста, почему вы считаете webscoket лучшим? Вроде как ws пакет и более популярен и меньше занимает ( ~36 МЛН. vs ~1МЛН в неделю, и 111 кб против 154 кб) ?
    PS извините, не увидел ,что Вы заменили пакете на исходниках на ws.

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

      Да, это старая лекция, сейчас уже я все примеры кода на ws перевел. Но не из-за популярности и звезд, а из-за качества кода. Кол-во скачиваний ни о чем не говорит. Вот у express еще больше скачиваний, а качество ужасное.

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

      @@TimurShemsedinov Вы не советуете пользоваться Express? Я сам ещё не достаточно хорошо разбираюсь в этом, выполняю тривиальные задачи на ноде

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

      @@adramanov8941 th-cam.com/video/RS8x73z4csI/w-d-xo.html

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

      @@adramanov8941 th-cam.com/video/-az912XBCu8/w-d-xo.html

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

      @@TimurShemsedinov а разве экспресс это не самое популярное и используемое решение?

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

    Есть какой-то способо написать комнаты для чата? Чтобы сообщение получали не все пользователи, а то только те кто находится в комнате.

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

      Да, это очень просто, нужно сделать коллекцию Map с ключами roomName, а значениями Set коннекшенов

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

      @@TimurShemsedinov Спасибо большое

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

      @@TimurShemsedinov С клиента по вебсокету приходит название комнаты и я пытаюсь его сделать ключем в Map, а значением Set из конекшенов, но это не совсем то что нужно. Помогите, плз
      Код:
      'use strict';
      const WebSocket = require('ws');
      const http = require('http');
      const server = http.createServer().listen(8000);
      const ws = new WebSocket.Server({ server });
      const rooms = new Map();
      const connections = new Set();
      ws.on('connection', connection => {
      connections.add(connection);
      connection.on('message', message => {
      const msgData = JSON.parse(message)
      if (msgData.type === 'join') {
      const { roomName } = msgData;
      rooms.set(roomName, connections);
      };
      console.log(rooms);
      for (const client of ws.clients) {
      if (client.readyState !== WebSocket.OPEN) continue;
      if (client === connection) continue;
      client.send(message);
      };
      });
      });

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

      @@lishtvansergey5595 Ты в каждую комнату запихиваешь один и тот эе Set всех соединений

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

      @@TimurShemsedinov Как мне создать Сеты для каждого roomName?

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

    Если я хочу подсоединиться к чату с телефона, то нужно делать VPS хостинг для чата?

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

      Зачем? Можешь подключиться и к своему компу. Он может спокойно работать как сервер. Только надо выделенный IP иметь, в случае если собираешься подключаться извне. Если ради опытов, в пределах дома, то и выделенный IP не нужен.

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

    15:56

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

    Что за ос интересная такая?

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

    О чем это видео?

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

      О чем этот вопрос?

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

      о websocket как ни странно)