Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 January 29

I

I in NodeUA - JavaScript and Node.js in Ukraine
добавлять новые middleware в цепочку ты можешь сам, можешь написать свою или скачать как либу, например либа body-parser в npm является middleware которая парсит тело запроса
источник

A

Andrey in NodeUA - JavaScript and Node.js in Ukraine
@tshemsedinov , завтрашний онлайн слэм в силе?
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Руслан
И значит есть способ устанавливать headers и сессию без middleware?
Тут пруф оф концепт же https://github.com/HowProgrammingWorks/NodejsStarterKit
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Andrey
@tshemsedinov , завтрашний онлайн слэм в силе?
Да, конечно
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Vladimir Shorinov
Ребят. Я фронтенд разработчик, работал с нодой очень мало. Где можно почитать вкратце о подходе использования middleware и его альтернативах чтоб было ясно в чем суть
Ты мое видео смотрел? Там примеры кода видел?
источник

Ц

Це тільки in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
Ты мое видео смотрел? Там примеры кода видел?
Думаю будет хорошей идеей сделать что-то типа faq и выделить жирным пунктом инфу/ссыслки на видео  чтобы каждый раз не обьяснять одно и то же
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
источник

NK

ID:0 in NodeUA - JavaScript and Node.js in Ukraine
Завтра семинар: Metarhia Node.js technology stack
Готовьте вопросы, можно будет их задать голосом завтра или написать в группу https://t.me/metaserverless
Регистрируемся тут: https://www.meetup.com/NodeUA/events/275649158/
источник

M

Miseo in NodeUA - JavaScript and Node.js in Ukraine
Посоветуйте что посмотреть и почитать по регистрациям и авторизациям. Хочу понять концепцию и принципы
источник

SK

Sergey Kukhar in NodeUA - JavaScript and Node.js in Ukraine
+
источник

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Делаю перезагрузку страницы, вебсокет соединение закрывается и юзеру проставляется флаг isOnline=false, а когда открывается (страница загрузилась), то isOnline = true. Но в нетворке приходит false, в чем может быть причина?
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Roman
Делаю перезагрузку страницы, вебсокет соединение закрывается и юзеру проставляется флаг isOnline=false, а когда открывается (страница загрузилась), то isOnline = true. Но в нетворке приходит false, в чем может быть причина?
В коде, которого не видно нам
источник

r

rev8ati in NodeUA - JavaScript and Node.js in Ukraine
Miseo
Посоветуйте что посмотреть и почитать по регистрациям и авторизациям. Хочу понять концепцию и принципы
+
источник

V

Vitaliy in NodeUA - JavaScript and Node.js in Ukraine
Miseo
Посоветуйте что посмотреть и почитать по регистрациям и авторизациям. Хочу понять концепцию и принципы
Головне - почитайте про асиметричне шифрування. Це база на якій будується будь яка авторизація
источник

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
В коде, которого не видно нам
async function pingUserConnection(container, user, ws) {
   const { id: sessId } = await container.resolve('wsSessionParser').parse(ws);
   const db = container.resolve('db');
   let lastPingTime = new Date();
   let lastPongTime = new Date();

   updateUserStatus(user.id, sessId, true, false, container);

   const stopPing = () => {
       clearInterval(intervalId);
       updateUserStatus(user.id, sessId, false, false, container);
   }

   const intervalId = setInterval(() => {
       const shouldMarkOffline = differenceInMinutes(lastPongTime, lastPingTime) > 2;

       if (shouldMarkOffline) {
           stopPing();
           ws.close();
           return
       }

       if (ws.readyState === 1) {
           ws.ping();
           lastPingTime = new Date();
       } else {
           stopPing();
       }
   }, ONE_MINUTE_IN_MILLIS * 2);

   ws.on('pong', async () => {
       lastPongTime = new Date();
       const actualUser = await db.models.user.findByPk(user.id)
       updateUserStatus(user.id, sessId, actualUser.isOnline, actualUser.isSleep, container);
   });

   ws.on('close', () => {
       stopPing();
       ws.close();
   });
}
источник

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Мне кажется тут происходит асинхронная конкуренция. Потомучто бывает 1 раз из 5-7 приходит true
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Roman
Мне кажется тут происходит асинхронная конкуренция. Потомучто бывает 1 раз из 5-7 приходит true
Тут все нужно перепичать, нужно выделить абстракцию блокировки, доступ к базе и рабрту ч сркетом, они смешаны на очень низком уровне
источник

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
Тут все нужно перепичать, нужно выделить абстракцию блокировки, доступ к базе и рабрту ч сркетом, они смешаны на очень низком уровне
Нужно встроить что-то из примитивов паралельного программирования, например мьютекс?
источник

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Что для этого случая подойдет?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Для начала можно и скорее нужно сделать всё проще. Во-первых апдейтить статус юзера на каждый понг бессмысленно.
Пользователь стает онлайн, когда присоединяется к сокету и стает офлайн, когда от сокета отключается. Другого не дано.
Во-вторых надо сделать логику вебсокета отдельно, базы - отдельно. И затем просто на соответствующие события повесить хуки для апдейта базы.
источник