Backend uses Node EventEmitter modules to decouple controllers from Socket.IO.

Emitter modules

Order emitter events

Registered in registerOrderListeners():

Index setting emitter

User setting emitter

Market data emitter

Per-index {index}TickData events update latestDataMap in socket manager — not directly forwarded (ZerodhaEventProcessor also uses io.emit for client ticks).

Producers

Controllers and utils emit events after DB writes:
  • zerodha.controller.ts — orders, financial data
  • indexSetting.controller.ts — CRUD
  • user.controller.ts — profile updates
  • order.controller.ts — reset index
  • recurringOrder.controller.ts — recurring flags
  • scheduleOrder.controller.ts — schedule rows