How to implement SSE
Closed this issue · 3 comments
This doesn't work!!
@Controller("/sse")
export class SseController {
@Get("/stream_test1")
async streamTest(@Res() res: Response) {
res.setHeader("Content-Type", "text/event-stream");
res.setHeader("Cache-Control", "no-cache");
res.setHeader("Connection", "keep-alive");
const interval = setInterval(() => {
res.write(`data: ${new Date().toISOString()}\n\n`);
}, 2000);
res.on("close", () => {
console.log("close");
clearInterval(interval);
res.end();
});
}
}
Error :error Error
at new HttpError (/Users/mac/Desktop/workspace/express_ts_typeorm_demo/node_modules/src/http-error/HttpError.ts:16:18)
at new NotFoundError (/Users/mac/Desktop/workspace/express_ts_typeorm_demo/node_modules/src/http-error/NotFoundError.ts:10:5)
at ExpressDriver.handleSuccess (/Users/mac/Desktop/workspace/express_ts_typeorm_demo/node_modules/src/driver/express/ExpressDriver.ts:324:15)
at /Users/mac/Desktop/workspace/express_ts_typeorm_demo/node_modules/src/RoutingControllers.ts:167:35
at processTicksAndRejections (node:internal/process/task_queues:95:5) {
httpCode: 404
}
404
close
plz !
export function registerSseRoute(app: Express) {
app.get("/sse/stream_test", (req, res) => {
res.setHeader("Content-Type", "text/event-stream");
res.setHeader("Cache-Control", "no-cache");
res.setHeader("Connection", "keep-alive");
const interval = setInterval(() => {
res.write(`data: ${new Date().toISOString()}\n\n`);
}, 2000);
res.on("close", () => {
console.log("close");
clearInterval(interval);
res.end();
});
});
}
It is feasible for me to use native express, I just want to know how to use the controller
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.