Думаю если бы каждый преподаватель подходил к предметной области с практической точки зрения, то каждый предмет был бы супер интересным. Благодарю за лекцию, пример с чатом очень понравился!
@s_bandera5 жыл бұрын
Спасибо, за супер подробный вводный урок в веб соккеты! Все наглядно и по-сути :)
@TimurShemsedinov5 жыл бұрын
Есть еще много другого: kzbin.infovideos
@ДенисШнуренко-щ1р4 жыл бұрын
Посилання "Вебсокеты" та "Чат" переставлені місцями
@maksimsergeevich59393 жыл бұрын
У меня почему-то в этом примере в НЕактивном клиенте (окне чата) сообщение от другого клиента приходит в виде [object Blob]. Код я скопировал с репозитория. Вебсокеты стоят последней версии 8.2.1
@ИванСергеев-и2ш3 жыл бұрын
Подскажите, пожалуйста, почему вы считаете webscoket лучшим? Вроде как ws пакет и более популярен и меньше занимает ( ~36 МЛН. vs ~1МЛН в неделю, и 111 кб против 154 кб) ? PS извините, не увидел ,что Вы заменили пакете на исходниках на ws.
@TimurShemsedinov3 жыл бұрын
Да, это старая лекция, сейчас уже я все примеры кода на ws перевел. Но не из-за популярности и звезд, а из-за качества кода. Кол-во скачиваний ни о чем не говорит. Вот у express еще больше скачиваний, а качество ужасное.
@adramanov89412 жыл бұрын
@@TimurShemsedinov Вы не советуете пользоваться Express? Я сам ещё не достаточно хорошо разбираюсь в этом, выполняю тривиальные задачи на ноде
@@TimurShemsedinov а разве экспресс это не самое популярное и используемое решение?
@lishtvansergey55953 жыл бұрын
Есть какой-то способо написать комнаты для чата? Чтобы сообщение получали не все пользователи, а то только те кто находится в комнате.
@TimurShemsedinov3 жыл бұрын
Да, это очень просто, нужно сделать коллекцию Map с ключами roomName, а значениями Set коннекшенов
@lishtvansergey55953 жыл бұрын
@@TimurShemsedinov Спасибо большое
@lishtvansergey55953 жыл бұрын
@@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); }; }); });
@TimurShemsedinov3 жыл бұрын
@@lishtvansergey5595 Ты в каждую комнату запихиваешь один и тот эе Set всех соединений
@lishtvansergey55953 жыл бұрын
@@TimurShemsedinov Как мне создать Сеты для каждого roomName?
@lishtvansergey55954 жыл бұрын
Если я хочу подсоединиться к чату с телефона, то нужно делать VPS хостинг для чата?
@phat804 жыл бұрын
Зачем? Можешь подключиться и к своему компу. Он может спокойно работать как сервер. Только надо выделенный IP иметь, в случае если собираешься подключаться извне. Если ради опытов, в пределах дома, то и выделенный IP не нужен.