we-superapp / apps /api /src /core /bus.js
nenbuj
Initial deploy: «МЫ» супер-апп
c562e21
Raw History Blame Contribute Delete
799 Bytes
// Ядро: реалтайм-шина. Ведёт Claude.
// Кодекс после записи в БД вызывает bus.emit(space_id, { type, space_id, payload }).
// Сокетный слой (ws.js) подписывается на эти события и рассылает клиентам.
import { EventEmitter } from 'node:events';
class Bus extends EventEmitter {
// emit события конкретного пространства
emit(spaceId, event) {
return super.emit('space:' + spaceId, event);
}
onSpace(spaceId, handler) {
super.on('space:' + spaceId, handler);
return () => super.off('space:' + spaceId, handler);
}
}
export const bus = new Bus();
bus.setMaxListeners(0); // много подписчиков-сокетов — это норма