fix(cli): use async broker creation in journal server

Use `AedesFactory.createBroker()` instead of the constructor to ensure
persistence is properly initialized before handling connections.
This commit is contained in:
hypercross 2026-07-06 16:01:29 +08:00
parent 98c4a195e8
commit 6b5fcdc051
1 changed files with 4 additions and 4 deletions

View File

@ -102,23 +102,23 @@ export async function createJournalServer(
// ---- MQTT Broker ----
const { Aedes: AedesFactory } = await import("aedes");
const broker = new AedesFactory();
// aedes requires listen() to initialize persistence before handling connections.
const broker = await AedesFactory.createBroker();
// ---- WebSocket server (attached to the existing HTTP server) ----
// Pattern from aedes docs: pass { server } to WSS, use 'connection' event
const wss = new WebSocketServer({ server: httpServer });
wss.on("connection", (ws, req) => {
console.log(`[journal] ws connected from ${req.socket.remoteAddress}`);
const stream = createWebSocketStream(ws);
broker.handle(stream, req);
});
broker.on("client", (client: import("aedes").Client) => {
console.log(`[journal] mqtt client ready: ${client.id}`);
console.log(`[journal] client ready: ${client.id}`);
});
broker.on("clientDisconnect", (client: import("aedes").Client) => {
console.log(`[journal] mqtt client disconnected: ${client.id}`);
console.log(`[journal] client disconnected: ${client.id}`);
});
// ---- Persistence (internal subscribe, no separate MQTT client) ----