Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 January 29

R

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

TS

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

DD

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

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Roman
Как это решит проблему с конкурентностью?
Позволит понять, что этой проблемы тут возможно и нет вообще
источник

DD

Dmytro Drachov in NodeUA - JavaScript and Node.js in Ukraine
типо отут у тебя получаеться actualUser.isOnline false?
const actualUser = await db.models.user.findByPk(user.id)
updateUserStatus(user.id, sessId, actualUser.isOnline, actualUser.isSleep, container);

Как бы я смотрю монга=) А шардированная, а с репликами? А read preference какой?
Мб ты просто делаешь апдейт но он не успевает реплецироваться везде.
источник

DD

Dmytro Drachov in NodeUA - JavaScript and Node.js in Ukraine
И еще вопрос actualUser.isOnline и actualUser.isSleep взаимо исключающие понятия?
Может ли одновременно быть true, true и false, false?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Dmytro Drachov
типо отут у тебя получаеться actualUser.isOnline false?
const actualUser = await db.models.user.findByPk(user.id)
updateUserStatus(user.id, sessId, actualUser.isOnline, actualUser.isSleep, container);

Как бы я смотрю монга=) А шардированная, а с репликами? А read preference какой?
Мб ты просто делаешь апдейт но он не успевает реплецироваться везде.
findByPk намекает на богомерский сиквелайз больше
источник

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Dmytro Drachov
Что значит в нетворке приходит?
updateUserStatus отправляет сообщение?
За ним graphql тянится
источник

Т

Тёмыч in NodeUA - JavaScript and Node.js in Ukraine
уууу
источник

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Dmytro Drachov
типо отут у тебя получаеться actualUser.isOnline false?
const actualUser = await db.models.user.findByPk(user.id)
updateUserStatus(user.id, sessId, actualUser.isOnline, actualUser.isSleep, container);

Как бы я смотрю монга=) А шардированная, а с репликами? А read preference какой?
Мб ты просто делаешь апдейт но он не успевает реплецироваться везде.
Это не монга а постгрес и sequelize
источник

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Dmytro Drachov
И еще вопрос actualUser.isOnline и actualUser.isSleep взаимо исключающие понятия?
Может ли одновременно быть true, true и false, false?
Это 2 разные параметры они друг от друга не зависят
источник

M

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

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Мьютекс не помог
источник

DD

Dmytro Drachov in NodeUA - JavaScript and Node.js in Ukraine
Roman
За ним graphql тянится
Правильно ли я понял что проблема такова
1. октрытая страница isOnline=true
2. перезагружаем страницу
3. isOnline=false
4. страница перезагрузилась
5. isOnline=true
6. запрос graphql на сервер отдает isOnline=false?
источник

DD

Dmytro Drachov in NodeUA - JavaScript and Node.js in Ukraine
Alexander
findByPk намекает на богомерский сиквелайз больше
Таки да, я чет подумал про монгус. Не видел сиквелайз в глаза просто
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Dmytro Drachov
Таки да, я чет подумал про монгус. Не видел сиквелайз в глаза просто
Та я тоже вижу его только в своих кошмарах
источник

DD

Dmytro Drachov in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Та я тоже вижу его только в своих кошмарах
Я думаю что как и всегда orm хороша когда надо простое и чтоб легко. Шаг влево - все...приехали.
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Dmytro Drachov
Я думаю что как и всегда orm хороша когда надо простое и чтоб легко. Шаг влево - все...приехали.
сиквелайз в этом плане плох даже для простого и легкого
источник

DD

Dmytro Drachov in NodeUA - JavaScript and Node.js in Ukraine
А еще полезно читать как работают нативные структуры в твоей сиквел базе, а то будет что такой нашел .transaction из орм и давай по примеру делать, а потом такой че ща фигня, и лезешь в доки mssql, а там типо как бы не так как в других
источник

DD

Dmytro Drachov in NodeUA - JavaScript and Node.js in Ukraine
Alexander
сиквелайз в этом плане плох даже для простого и легкого
Я так понял горький опыт?
источник