Тёмный

HTTP сервер на Node.js (routing, cluster, IP sticky) 

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

Примеры кода: github.com/How...
Курс «Основы программирования» с примерами на JavaScript habr.com/ru/po...
#nodejs #http #сервер #роутинг #маршрутизация #кластер #программирование #js

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

 

1 окт 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 36   
@igorsavelev9013
@igorsavelev9013 5 лет назад
Почему Марк Аврелий так плохо относится к Java?)
@TimurShemsedinov
@TimurShemsedinov 5 лет назад
Марк Аврелий любит мультипарадигменное программирование, как он может любить язык, в котором все парадигмы нужно реализовывать через ООП
@HowManyShrimps-g7z
@HowManyShrimps-g7z 4 года назад
Java is a crap. lol
@metalcorewitchkhousovitch5774
@metalcorewitchkhousovitch5774 5 лет назад
Очень интересно смотреть реализацию важнейших механизмов веб-сервера на нативе, благодарю!) Только, что это за редактор, а-ля "ностальджи"?)
@TimurShemsedinov
@TimurShemsedinov 5 лет назад
Ну вот завтра будет лекция по сессиям и кукам и постепенно по всем темам для нативной реализации с5рвера пройдем
@TimurShemsedinov
@TimurShemsedinov 5 лет назад
ru.wikipedia.org/wiki/Midnight_Commander
@bogdanpavlovskiy3953
@bogdanpavlovskiy3953 4 года назад
@@TimurShemsedinov Очень интересно как вы работаете в данном редакторе в действительно over больших проектах. Там где куча файлов не считая node модулей. Например как вы обходитесь без поиска по проекту, удобного ui для git конфликтов, и так далее
@TimurShemsedinov
@TimurShemsedinov 4 года назад
@@bogdanpavlovskiy3953 в этом редакторе есть поиск по файлам и каталогам, даже по маскам и регулярным выражениям, есть замена. Все операции с git я делаю в консоли, и вообще большинство профессионалов не используют для гита UI и все делают в консоли, даже работая при этом в сложных IDE, потому, что из UI доступны 10% всех возможностей гита, вот как вы делаете cherry-pick, interactive rebase, fixup commits, squash, изменение remote и прочее?
@kombuchamp
@kombuchamp 4 года назад
@@TimurShemsedinov Ну, на самом деле, все, что Вы перечислили, можно сделать в webstorm. Хотя вот например bisect сделать нельзя.
@Jaood_xD
@Jaood_xD 2 года назад
40:08 "Благодаря библиотечке 'cluster' createServer сделается только в master-процессе...". Звучит как эдакая "магия", при чём контринтуитивная. Подскажите, пожалуйста, какие-то источники и статьи, в которых подробнее об этом можно почитать. Спасибо
@TimurShemsedinov
@TimurShemsedinov 2 года назад
Только исходники ноды github.com/nodejs/node/tree/main/lib/internal/cluster
@12312312423
@12312312423 Год назад
То что нужно)
@nix7705
@nix7705 Год назад
Дуже цікаво, але мабуть як теорія щоб розуміти як воно працює всередині тих же фреймворків, бо якщо пройтися по вакансіям усі вимагають фреймворки
@TimurShemsedinov
@TimurShemsedinov Год назад
Ну от почитайте питания на інтерв'ю які я разповсюджую як галузевий стандарт github.com/tshemsedinov/NodeJS-Interview-Questions
@TimurShemsedinov
@TimurShemsedinov Год назад
Дуже раджу це подивитись ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE--az912XBCu8.html
@randomtron
@randomtron 3 года назад
Почему на 29:49 вы говорите, что у нас синхронный сервер? Разве сам факт того, что мы передаём в createServer коллбэк, не делает его асинхронным?
@TimurShemsedinov
@TimurShemsedinov 3 года назад
Чуть ранише на минуту отмотайте и пепесмотрите. Там все функции на роутинге синхронные
@TheLevius
@TheLevius Год назад
А я вот не понимаю одного момента. Мы когда отправляем ссылку на сокет в воркер через 'message' и апдейтим сервер в него, с последующим эмитом 'connection', что произойдет если в этот момент на балансер придет еще запрос, а http сервер на воркере еще не обработал запрос, он обработается нормально? мы же запишем уже другой сервер в сокет. Можно пояснить этот момент?
@dmytroyurchenko200
@dmytroyurchenko200 2 года назад
вопрос касательно обработчика http.createServer((req, res) => { res.end(router({ req, res }) + ''); }).listen(8000); в исходнике NodeServer/native-advanced/server.js Если мы перепишем этот синхронный обработчик просто добавив async (req, res): http.createServer(async (req, res) => { res.end(router({ req, res }) + ''); }).listen(8000); станет ли обработчик асинхронным и не блокирующим приход новых запросов как в исходнике NodeServer/native-async/server.js ?
@TimurShemsedinov
@TimurShemsedinov 2 года назад
Не станет, код не становится асинхронным от использования асинхронных контрактов (колюеков, промисов, async/await, асинхронных итераторов и т.д.), нужно, чтобы в коде были операции ввода-вывода, которые разрывают последовательное выполнение потока js-кода. Смотрите курс по асинхронному программированию.
@CokePaul
@CokePaul 6 лет назад
Небольшая поправка для regexp: вместо `const rx = new RegExp(key.replace('*', '(.*)'))` стоит делать `const rx = new RegExp(key.replace(/\*/g, '(.*)'))`, чтобы все параметры вошли в массив. Также интересует вопрос - стоит ли расширять резолверы типов добавлением хедеров с ContentType?
@HowManyShrimps-g7z
@HowManyShrimps-g7z 4 года назад
Как запускать сервер на node?
@TimurShemsedinov
@TimurShemsedinov 4 года назад
Если это не понятно, то нужно смотреть это видео, например, на 4:40 я запускаю
@HowManyShrimps-g7z
@HowManyShrimps-g7z 4 года назад
@@TimurShemsedinov проморгал. Спасибо.
@HowManyShrimps-g7z
@HowManyShrimps-g7z 4 года назад
@@TimurShemsedinov 21:55 возраст не обновляется потому, что мы передаем число, а не функцию?
@TimurShemsedinov
@TimurShemsedinov 4 года назад
@@HowManyShrimps-g7z да, потому, что число это скаляр, а функция передается по ссылке. Посмотрите мои вводные лекции в программирование и в JavaScript, чтоб таких вопросов не возникало при использовании ноды.
@PerfectSwingDance
@PerfectSwingDance 5 лет назад
2 вопроса касательно лекции 1) В сериализаторе types необходимо писать уже асинхронный код? (async/await, promises, запрсы к бд и стороннему API) 2) Как все-таки можно избежать рекурсии в serve функции Спасибо
@TimurShemsedinov
@TimurShemsedinov 5 лет назад
1. Насколько я помню, в этой лекции у меня все примеры имеют или синхронные сериализаторы или асинхронные на колбеках. Можно делать и на промисах или асин-эвейтах, но я не понимаю, почему у Вас в скобках написано в вопросе о сериализаторах про запросы к БД и АПИ. В новой лекции по АПИ сериализаторы я вообще убрал: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE--az912XBCu8.html 2. В каком именно примере рекурсия, можно ссылку на пример или время в видео?
@PerfectSwingDance
@PerfectSwingDance 5 лет назад
@@TimurShemsedinov 32:53
@PerfectSwingDance
@PerfectSwingDance 5 лет назад
@@TimurShemsedinov Подразумеваю, что можно реализовать с помощью async/await или же через promisы сторонние запросы (к бд, к API)? Или так лучше не делать?
@TimurShemsedinov
@TimurShemsedinov 5 лет назад
@@PerfectSwingDance сторонние запросы можно и нужно делать, но в обработчиках, а не на сериализаторе
@CokePaul
@CokePaul 6 лет назад
routing is simple and amazing
@TimurShemsedinov
@TimurShemsedinov 6 лет назад
But note that route handlers still should not contain business logic, only calls to submodule with business logic because mixing network, db, business, math, rendering, security, logging etc. to a single handler is not a good idea. See terrible example here: github.com/HowProgrammingWorks/AbstractionLayers/blob/master/JavaScript/badServer.js and following: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-d_vyO2CkiOc.html and ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-O7A9chb573E.html I'll publish special lecture to clarify this issue.
Далее
HTTP сессии и cookies на чистом Node.js
1:39:15
Обменялись песнями с POLI
00:18
Просмотров 214 тыс.
Atomics, SharedArrayBuffer, worker_threads в Node.js
45:52
Клиент-сервер на Node.js TCP и UDP, DNS
51:22