From 1ea3392a8fdd20bb2ff9714f09915d6ef13bf38b Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Fri, 7 Mar 2025 16:29:28 +0700 Subject: [PATCH] test ws --- src/app.ts | 53 +++++++-------------------- src/controllers/ReportController.ts | 3 +- src/services/webSocket.ts | 55 +++++++++++++++++++++-------- 3 files changed, 55 insertions(+), 56 deletions(-) diff --git a/src/app.ts b/src/app.ts index 344c521e..0e23f790 100644 --- a/src/app.ts +++ b/src/app.ts @@ -14,16 +14,14 @@ import logMiddleware from "./middlewares/logs"; import { CommandController } from "./controllers/CommandController"; import { ProfileSalaryController } from "./controllers/ProfileSalaryController"; -import { WebSocketServer } from "ws"; -import http from "http"; -export const wss = new WebSocketServer({ noServer: true, - path: "/api/v1/org-socket", - }); +import { initWebSocket } from "./services/webSocket"; async function main() { await AppDataSource.initialize(); - + + initWebSocket(); + const app = express(); app.use( @@ -89,14 +87,14 @@ async function main() { }); // app.listen(APP_PORT, APP_HOST, () => console.log(`Listening on: http://localhost:${APP_PORT}`)); - // app.listen( - // APP_PORT, - // APP_HOST, - // () => ( - // console.log(`[APP] Application is running on: http://localhost:${APP_PORT}`), - // console.log(`[APP] Swagger on: http://localhost:${APP_PORT}/api-docs`) - // ), - // ); + app.listen( + APP_PORT, + APP_HOST, + () => ( + console.log(`[APP] Application is running on: http://localhost:${APP_PORT}`), + console.log(`[APP] Swagger on: http://localhost:${APP_PORT}/api-docs`) + ), + ); async function runMessageQueue() { try { await rabbitmqInit(); @@ -108,34 +106,7 @@ async function main() { runMessageQueue(); - const server = http.createServer(app); - // การจัดการคำขออัปเกรดจาก HTTP เป็น WebSocket - server.on("upgrade", (request:any, socket:any, head:any) => { - console.log("🔹 Handling upgrade request..."); - wss.handleUpgrade(request, socket, head, (ws:any) => { - console.log("🔹 WebSocket connection established"); - wss.emit("connection", ws, request); - }); - }); - - wss.on("connection", (ws:any) => { - console.log("✅ Client connected to WebSocket"); - - ws.on("close", () => { - console.log("❌ Client disconnected"); - }); - - ws.on("error", (error:any) => { - console.error("WebSocket error:", error); - }); - }); - - server.listen(APP_PORT, APP_HOST, () => { - console.log(`[APP] Application is running on: http://localhost:${APP_PORT}`); - console.log(`[APP] Swagger on: http://localhost:${APP_PORT}/api-docs`); - console.log("[APP] HTTP Server is listening on current port"); - }); } main(); diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index c9fadc2e..2c6b54b3 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -32,6 +32,7 @@ import { viewRegistryOfficer } from "../entities/view/viewRegistryOfficer"; import { viewRegistryEmployee } from "../entities/view/viewRegistryEmployee"; import { EmployeeTempPosMaster } from "../entities/EmployeeTempPosMaster"; import { sendWebSocket } from "../services/webSocket"; +// import { sendWebSocket } from "../services/webSocket"; @Route("api/v1/org/report") @Tags("Report") @@ -3541,7 +3542,7 @@ export class ReportController extends Controller { const metaData = { template: "report2", reportName: "report2", data: { data } }; sendWebSocket(metaData) - // return new HttpSuccess({ template: "report2", reportName: "report2", data: { data } }); + return new HttpSuccess({ template: "report2", reportName: "report2", data: { data } }); } /** diff --git a/src/services/webSocket.ts b/src/services/webSocket.ts index 5dd006f0..c78b6428 100644 --- a/src/services/webSocket.ts +++ b/src/services/webSocket.ts @@ -1,16 +1,43 @@ -import { WebSocket } from "ws"; -import { wss } from "../app"; +import { WebSocketServer } from "ws"; -export async function sendWebSocket(data:any){ - wss.clients.forEach((client: any) => { - if (client.readyState === WebSocket.OPEN) { - const message = JSON.stringify(data); - console.log("📤 Sending data to client:", message); - client.send(message, (err:any) => { - if (err) { - console.error("❌ Error sending message:", err); - } - }); - } +let wss: WebSocketServer; + +export function initWebSocket() { + wss = new WebSocketServer({ port: 13002, path: "/api/v1/org-socket" }); + + // การจัดการคำขออัปเกรดจาก HTTP เป็น WebSocket + wss.on("upgrade", (request: any, socket: any, head: any) => { + console.log("🔹 Handling upgrade request..."); + wss.handleUpgrade(request, socket, head, (ws: any) => { + console.log("🔹 WebSocket connection established"); + wss.emit("connection", ws, request); }); -} \ No newline at end of file + }); + + wss.on("connection", (ws: any) => { + console.log("✅ Client connected to WebSocket"); + + ws.on("close", () => { + console.log("❌ Client disconnected"); + }); + + ws.on("error", (error: any) => { + console.error("WebSocket error:", error); + }); + }); +} + +export async function sendWebSocket(data: any) { + if (!wss) initWebSocket(); + wss.clients.forEach((client: any) => { + if (client.readyState === WebSocket.OPEN) { + const message = JSON.stringify(data); + console.log("📤 Sending data to client:", message); + client.send(message, (err: any) => { + if (err) { + console.error("❌ Error sending message:", err); + } + }); + } + }); +}