Size: a a a

Node.js — русскоговорящее сообщество

2020 February 09

Н

Никита in Node.js — русскоговорящее сообщество
Андрей Бородин
меня смущает другое, почему не работает условие if (cur_time < stop_timer)
но работает (cur_time > stop_timer)
Потому что переменные где-то потеряли значение
источник

E

Exi(s)t in Node.js — русскоговорящее сообщество
Андрей Бородин
как не могу?
Задача1 (реализована)
Запуск таймера при поступлении двух токенов со стороннего сервиса.
1) При поступлении первого токена идет ожидание второго. При поступлении второго - запускается таймер с помощью eventsource который передает событие "вторая транзакция" c временем запуска и временем его остановки. С помощью js на странице запускается таймер и отсчитывает время до конца.

Задача 2 (не работает)
Необходимо при перезапуске страницы или открытии ее другим пользователем продолжать отображать этот же таймер. Для этого eventsorce при открытии страницы передает событие "таймер" с данными о  времени с сервера и времени остановки таймера.
При этом таймер не работает
Как ты описал задачу. Я бы при поступлении первого токена кидал в бд запись со статусом, при поступлении второго токена, статус меняется и присваивается таймштамп начала события и его продолжительность
источник

АБ

Андрей Бородин in Node.js — русскоговорящее сообщество
Никита
Потому что переменные где-то потеряли значение
не знаю, лог сервера их отображает
источник

АБ

Андрей Бородин in Node.js — русскоговорящее сообщество
Exi(s)t
Как ты описал задачу. Я бы при поступлении первого токена кидал в бд запись со статусом, при поступлении второго токена, статус меняется и присваивается таймштамп начала события и его продолжительность
так и работает
источник

Н

Никита in Node.js — русскоговорящее сообщество
Ты похож на троля
источник

E

Exi(s)t in Node.js — русскоговорящее сообщество
Другой юзер открывает страницу/перезагружает ее, ему серв отдаетразницу между собитыйным временем и длительностью события — вс остальное оформляешь на фронте как тебе угодно
источник

АБ

Андрей Бородин in Node.js — русскоговорящее сообщество
Exi(s)t
Как ты описал задачу. Я бы при поступлении первого токена кидал в бд запись со статусом, при поступлении второго токена, статус меняется и присваивается таймштамп начала события и его продолжительность
иначе бы я бы не смог определить, что поступила вторая транзакция)
источник

ИК

Игорь Корнелли in Node.js — русскоговорящее сообщество
Андрей Бородин
меня смущает другое, почему не работает условие if (cur_time < stop_timer)
но работает (cur_time > stop_timer)
№%!!! ну сказано же тебе, делай типа транзакции или заказы, какую-то виртуальную сущность введи, с идентификатором, храни ее в редис + TTL к пакету привяжи, сдохла - закончилось, не сдохла - TTL читай, если логика сложнее и надо обработать то юзай bull.js/agenda
источник

АБ

Андрей Бородин in Node.js — русскоговорящее сообщество
Exi(s)t
Другой юзер открывает страницу/перезагружает ее, ему серв отдаетразницу между собитыйным временем и длительностью события — вс остальное оформляешь на фронте как тебе угодно
вот тут и проблема. передавать передаю - но клиент не получает
источник

E

Exi(s)t in Node.js — русскоговорящее сообщество
Ясно
источник

АБ

Андрей Бородин in Node.js — русскоговорящее сообщество
Игорь Корнелли
№%!!! ну сказано же тебе, делай типа транзакции или заказы, какую-то виртуальную сущность введи, с идентификатором, храни ее в редис + TTL к пакету привяжи, сдохла - закончилось, не сдохла - TTL читай, если логика сложнее и надо обработать то юзай bull.js/agenda
почему не работает так как сейчас?..
источник

E

Exi(s)t in Node.js — русскоговорящее сообщество
Ты чужой код открыл или что? Тебе разжевали как все устроить — ты говоришь все сделано, но «клиент не получает», «почему таймер не работает»
источник

АБ

Андрей Бородин in Node.js — русскоговорящее сообщество
Вот я передаю событье при подключении к eventsource
if (cur_time < stop_timer) {
response.write("event: timer\ndata: " + "{\"stop\": " + result + ", \"cur\": " + cur_time + "}\n\n");
источник

ИК

Игорь Корнелли in Node.js — русскоговорящее сообщество
Андрей Бородин
почему не работает так как сейчас?..
потому что надо так как предлагают) тебе инстансы твоего счетчика надо разделить, никогда ничего в памяти запущенного скрипта не хранят, все должно быть независимым от процесса, вот начнешь микросервисы гонять в кубернетес - поймешь, что все надо где-то хранить
источник

E

Exi(s)t in Node.js — русскоговорящее сообщество
Андрей Бородин
Вот я передаю событье при подключении к eventsource
if (cur_time < stop_timer) {
response.write("event: timer\ndata: " + "{\"stop\": " + result + ", \"cur\": " + cur_time + "}\n\n");
Дебагом проходил?
источник

E

Exi(s)t in Node.js — русскоговорящее сообщество
Смотрел что у тебя в переменных? Смотрел какие данные вообще гоняются в отладчике?
источник

АБ

Андрей Бородин in Node.js — русскоговорящее сообщество
Exi(s)t
Дебагом проходил?
только если условие такое
if (cur_time >stop_timer) {
источник

АБ

Андрей Бородин in Node.js — русскоговорящее сообщество
Exi(s)t
Смотрел что у тебя в переменных? Смотрел какие данные вообще гоняются в отладчике?
да там все как нужно
источник

E

Exi(s)t in Node.js — русскоговорящее сообщество
Андрей Бородин
Вот я передаю событье при подключении к eventsource
if (cur_time < stop_timer) {
response.write("event: timer\ndata: " + "{\"stop\": " + result + ", \"cur\": " + cur_time + "}\n\n");
Json.stringify религия не позволяет?
источник

E

Exi(s)t in Node.js — русскоговорящее сообщество
Жесть какая-то. Какую либу используешь для обработки запросов? Кинь участок кода конкретный.
источник