
Sergey
28.01.2017
13:51:38
может они имеют ввиду запускать один таймер через замыкание для каждой сессии, но тогда же все равно будет очередь из таймеров. Я тоже не понимаю как это - решить все одним таймером
интересно

Vladimir
28.01.2017
13:53:51
ты исходишь из того, что нельзя просто взять и использовать таймеры как есть
это предположение ничем не обосновано

Google

Sergey
28.01.2017
13:55:59

Artur
28.01.2017
13:57:40
вообще для такого, кажется, будет норм redis с ttl. такое и скейлить легко

Victor
28.01.2017
13:57:58
Если один таймер для всех брать, то изи же

Alexey
28.01.2017
13:58:19
Каждая сессия инровая это раунд, в нем 99 секунд как в файтинге, общение по socket.io

Сергей
28.01.2017
13:59:59

Alexey
28.01.2017
14:00:12
В идеале чтобы сервер считал каждую секунду

Vladimir
28.01.2017
14:00:14
причем здесь редис то вообще

Сергей
28.01.2017
14:00:21

Alexey
28.01.2017
14:00:25
И на клиента эмитил просто "время обновилось"

MVP
28.01.2017
14:00:30
Может на каждого нового клиента спаунить новый процесс? Или это через чур хардкор

Victor
28.01.2017
14:00:43
хад
хард

Google

Victor
28.01.2017
14:00:57
ибо плодить 1000 процессов не есть хорошо

Alexey
28.01.2017
14:00:59

Дмитрий
28.01.2017
14:01:40
Сделать массив-очередь выполнения и выполнять интервалы пошагово до ближайшего следующего события

Vladimir
28.01.2017
14:01:57

Victor
28.01.2017
14:02:01
У вас есть один таймер, от него зависят все текущие и последующие сессии.

Artur
28.01.2017
14:02:21

Дмитрий
28.01.2017
14:02:30
зачем?
Я же тебя не спрашиваю "зачем нельзя"

Artur
28.01.2017
14:02:33
воркеры на это подписываются, соответственно

Vladimir
28.01.2017
14:02:50

Alexey
28.01.2017
14:02:54
Ой нет, как-то неохота лишние сущности плодиить для решения)

Victor
28.01.2017
14:03:03
Можно просто высчитавать время текущей сессии и след. сессии и исходя из полученного результата закрывать или открывать нью сессиию

Alexey
28.01.2017
14:03:06
Итак к минимуму стараюсь свести

Vladimir
28.01.2017
14:03:15
Не надо решать проблему, которой нет

Дмитрий
28.01.2017
14:03:25

Vladimir
28.01.2017
14:03:26
Только хуже будет

Alexey
28.01.2017
14:03:34
Да сделал, на моей тачке подтормаживает при 300 уже

Vladimir
28.01.2017
14:03:36
> @ZeroBias
Не, ты говоришь что так нельзя, я тебя понял, вопросов больше не имею
Я говорю что это ничего не решает

Alexey
28.01.2017
14:03:52
И я не знаю это много или мало

Google

Сергей
28.01.2017
14:03:57

Alexey
28.01.2017
14:04:01
Так я хз это много или мало

Сергей
28.01.2017
14:04:13
один таймер -> очередь событий

Дмитрий
28.01.2017
14:04:14
Можно одним всё решить, как уже выше сказали
нельзя

Vladimir
28.01.2017
14:04:18
Вопрос не в этом, в вопрос в том - чт именно полтармаживает

Alexey
28.01.2017
14:04:20
И как оно будет себя в бою вести

Дмитрий
28.01.2017
14:04:29

Vladimir
28.01.2017
14:04:41

Alexey
28.01.2017
14:04:43

Vladimir
28.01.2017
14:04:48
Это не решает ничего

Дмитрий
28.01.2017
14:05:01
Поподробнее плз)
Сделать массив-очередь выполнения и выполнять интервалы пошагово до ближайшего следующего события

Vladimir
28.01.2017
14:05:13
Это бред - таймеры так и работают

Vladimir
28.01.2017
14:05:24

MVP
28.01.2017
14:05:24

Victor
28.01.2017
14:05:25
сallback в помощь
один таймер -> очередь событий

Сергей
28.01.2017
14:06:02
Поподробнее плз)
Ты в каждой сессии пишешь когда тебе надо эмитнуть событие, типа nextEmit: Date.now() + 90 * 60 * 60
Дальше каждую секунду пробегаешь по всем сессиям и проверяешь пришло время или нет
Если пришло вызываешь событие, но тут eventEmitter Не особо нужен

Vladimir
28.01.2017
14:06:16

Vladimir
28.01.2017
14:06:19
Это скорее всего будет только медленнее

Google

Vladimir
28.01.2017
14:06:27
Много лишней работы

Дмитрий
28.01.2017
14:06:40
По всем бегать медленнее, да

Сергей
28.01.2017
14:06:42

Victor
28.01.2017
14:06:46

Vladimir
28.01.2017
14:06:53
> @sovamist
скажи это всем игровым движкам
Причем здесь это

Alexey
28.01.2017
14:06:59
Так, давайте я сейчас скажу как я это решил сейчас и вы скажете это ок или нет лучше
А то срач

Сергей
28.01.2017
14:07:04

Admin
ERROR: S client not available

Vladimir
28.01.2017
14:07:30
Таймеры на сервере раз в секунду? чет хз

Alexey
28.01.2017
14:07:36
На ноде никакого таймера нет, есть комнаты, у каждой комнаты есть lastUpdate
Каждый клиент запускает свой клиентский сетинтервал и раз в 10 секунд эмитит на сервак что он дескать прошло 10 секунд
Нода сверяет время эмита с записанным lastupdate

Сергей
28.01.2017
14:08:36
Таймеры на сервере раз в секунду? чет хз
нет
Там бесконечный цикл, и на каждой итерации внутренний цикл бежит по объектам и сверяет время и если надо выполняет действие (рендер, просчет анимации, физики и прочее)

Alexey
28.01.2017
14:08:51
И если не совпадает то закрывает соединение типа читер
Это такое сейчас рабочее решение, но мне чот кажется что это костыль

Vladimir
28.01.2017
14:09:25

Alexey
28.01.2017
14:09:31
Причем жуткий
Это так?

Сергей
28.01.2017
14:09:42

Google

Eduard
28.01.2017
14:10:05
Не уж то настал тот день когда пых теперь быстрее ноды?
https://habrahabr.ru/post/320670/

Vladimir
28.01.2017
14:10:28
Настал тот день, когда идиоты публикуют бенчмарки
Но он давно настал

Alexey
28.01.2017
14:10:51
Итак?

Eduard
28.01.2017
14:11:12

Дмитрий
28.01.2017
14:11:26
var array = {}

Сергей
28.01.2017
14:11:27

Дмитрий
28.01.2017
14:11:34
хохочу

Vladimir
28.01.2017
14:11:39
просто очень дебильный бенчмарк
посмотрите как там mysql в ноде меряют

Alexey
28.01.2017
14:12:02
Эх... ладно

Сергей
28.01.2017
14:12:50
нахрена мерить мускулЬ?

Eduard
28.01.2017
14:12:52

Сергей
28.01.2017
14:12:53
чо за тупость
чувак
ты бы блин изучил ноду прежде чем постить эту херню

Vladimir
28.01.2017
14:13:32
да не, просто как бы ярко демонстрирует компетентность автора

Сергей
28.01.2017
14:13:52
вот поэтому хабр не торт

Eduard
28.01.2017
14:14:14
или я чего то не понимаю