WebSocket сервер на Node.js (электронные таблицы и чат)
ฝัง
- เผยแพร่เมื่อ 23 ส.ค. 2024
- Вебсокеты: github.com/How...
Чат: github.com/How...
Курс «Основы программирования» с примерами на JavaScript habr.com/ru/po...
#сокеты #вебсокеты #nodejs #чат #лекции #программирование #js
Думаю если бы каждый преподаватель подходил к предметной области с практической точки зрения, то каждый предмет был бы супер интересным. Благодарю за лекцию, пример с чатом очень понравился!
Спасибо, за супер подробный вводный урок в веб соккеты! Все наглядно и по-сути :)
Есть еще много другого: th-cam.com/users/TimurShemsedinovvideos
У меня почему-то в этом примере в НЕактивном клиенте (окне чата) сообщение от другого клиента приходит в виде [object Blob]. Код я скопировал с репозитория. Вебсокеты стоят последней версии 8.2.1
Посилання "Вебсокеты" та "Чат" переставлені місцями
Подскажите, пожалуйста, почему вы считаете webscoket лучшим? Вроде как ws пакет и более популярен и меньше занимает ( ~36 МЛН. vs ~1МЛН в неделю, и 111 кб против 154 кб) ?
PS извините, не увидел ,что Вы заменили пакете на исходниках на ws.
Да, это старая лекция, сейчас уже я все примеры кода на ws перевел. Но не из-за популярности и звезд, а из-за качества кода. Кол-во скачиваний ни о чем не говорит. Вот у express еще больше скачиваний, а качество ужасное.
@@TimurShemsedinov Вы не советуете пользоваться Express? Я сам ещё не достаточно хорошо разбираюсь в этом, выполняю тривиальные задачи на ноде
@@adramanov8941 th-cam.com/video/RS8x73z4csI/w-d-xo.html
@@adramanov8941 th-cam.com/video/-az912XBCu8/w-d-xo.html
@@TimurShemsedinov а разве экспресс это не самое популярное и используемое решение?
Есть какой-то способо написать комнаты для чата? Чтобы сообщение получали не все пользователи, а то только те кто находится в комнате.
Да, это очень просто, нужно сделать коллекцию Map с ключами roomName, а значениями Set коннекшенов
@@TimurShemsedinov Спасибо большое
@@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);
};
});
});
@@lishtvansergey5595 Ты в каждую комнату запихиваешь один и тот эе Set всех соединений
@@TimurShemsedinov Как мне создать Сеты для каждого roomName?
Если я хочу подсоединиться к чату с телефона, то нужно делать VPS хостинг для чата?
Зачем? Можешь подключиться и к своему компу. Он может спокойно работать как сервер. Только надо выделенный IP иметь, в случае если собираешься подключаться извне. Если ради опытов, в пределах дома, то и выделенный IP не нужен.
15:56
Что за ос интересная такая?
Fedora 29
О чем это видео?
О чем этот вопрос?
о websocket как ни странно)