Я сейчас работаю над приложением для моделирования, реализованным с помощью NodeJS. У меня есть основная симуляция l oop, которая обновляет ser ie a сущностей (JS объектов) на неопределенный срок. Мне нужно реализовать механизм, чтобы иметь возможность подключаться к симулятору с помощью веб-сокетов. Затем, основываясь на некоторых параметрах подключения, я хотел бы на каждой итерации выводить sh последнее состояние указанного c объекта в веб-сокет.
Как я вижу, решение должно состоять в запись в объект stream
последнего состояния каждой сущности в каждой итерации, а затем, после установления соединения, запись в веб-сокет каждый раз, когда данные считываются из stream
, назначенного этой сущности.
Однако я не могу понять, как можно было бы разделить кучу потоковых объектов между l oop и обратным вызовом соединения через веб-сокет. Можно ли создать что-то вроде "именованного" глобального stream
, чтобы я мог писать в него в основном l oop и находить его в обратном вызове веб-сокета?
Совместное использование массива streams
моделирование с самого начала не вариант, так как количество сущностей может меняться со временем.
Вот некоторый псевдокод моей идеальной реализации; любые подсказки и указания будут полезны!
// simulation loop
while(true){
for(let entity in entities) {
update(entity);
streams[entity].write(entity.state);
}
}
// websocket handler
websocketServer.on('message asking about entity'){
for(let data of streams[entity]){
reply(data)
}
}