refactor: start server in worker online handler in examples
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 12 Aug 2023 21:43:48 +0000 (23:43 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 12 Aug 2023 21:43:48 +0000 (23:43 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
examples/typescript/http-server-pool/fastify-cluster/src/main.ts
examples/typescript/websocket-server-pool/ws-cluster/src/main.ts
examples/typescript/websocket-server-pool/ws-cluster/src/worker.ts

index 0f1b4bf33885c44fe3d71a2fda2afc1b2d588e43..882c1acdad98376691c698f88943f8cfe6fef1fb 100644 (file)
@@ -12,28 +12,26 @@ const pool = new FixedClusterPool<WorkerData, WorkerResponse>(
   availableParallelism(),
   workerFile,
   {
+    onlineHandler: () => {
+      pool
+        .execute({ port: 8080 })
+        .then(response => {
+          if (response.status) {
+            console.info(
+              // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+              `Fastify is listening on worker on port ${response.port}`
+            )
+          } else {
+            console.error('Fastify failed to start on worker:', response.error)
+          }
+          return null
+        })
+        .catch(error => {
+          console.error(error)
+        })
+    },
     errorHandler: (e: Error) => {
       console.error(e)
     }
   }
 )
-
-// Start one fastify instance per cluster worker in the pool
-for (let i = 1; i <= pool.info.maxSize; i++) {
-  pool
-    .execute({ port: 8080 })
-    .then(response => {
-      if (response.status) {
-        console.info(
-          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
-          `Fastify is listening on worker ${i} on port ${response.port}`
-        )
-      } else {
-        console.error(`Fastify failed to start on worker ${i}:`, response.error)
-      }
-      return null
-    })
-    .catch(error => {
-      console.error(error)
-    })
-}
index ce9eb642e48fbff04e8a168e9dd11a2a53912958..8779c6dcf309ae49b4960abd4ac216af17582a25 100644 (file)
@@ -12,31 +12,29 @@ const pool = new FixedClusterPool<WorkerData, WorkerResponse>(
   availableParallelism(),
   workerFile,
   {
+    onlineHandler: () => {
+      pool
+        .execute({ port: 8080 })
+        .then(response => {
+          if (response.status) {
+            console.info(
+              // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+              `WebSocket server is listening on worker on port ${response.port}`
+            )
+          } else {
+            console.error(
+              'WebSocket server failed to start on worker:',
+              response.error
+            )
+          }
+          return null
+        })
+        .catch(error => {
+          console.error(error)
+        })
+    },
     errorHandler: (e: Error) => {
       console.error(e)
     }
   }
 )
-
-// Start one ws server instance per cluster worker in the pool
-for (let i = 1; i <= pool.info.maxSize; i++) {
-  pool
-    .execute({ port: 8080 })
-    .then(response => {
-      if (response.status) {
-        console.info(
-          // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
-          `WebSocket server is listening on worker ${i} on port ${response.port}`
-        )
-      } else {
-        console.error(
-          `WebSocket server failed to start on worker ${i}:`,
-          response.error
-        )
-      }
-      return null
-    })
-    .catch(error => {
-      console.error(error)
-    })
-}
index 7d2a36d36cb96148b7479d81060e4d995029e63b..56060b2d28b043d40eb3dad1cf4f7ed52d33db8b 100644 (file)
@@ -19,7 +19,7 @@ const startWebSocketServer = (workerData?: WorkerData): WorkerResponse => {
   try {
     const wss = new WebSocketServer({ port: workerData?.port }, () => {
       console.info(
-        `⚡️[ws server]: WebSocket server is started at ws://localhost:${
+        `⚡️[ws server]: WebSocket server is started on worker at ws://localhost:${
           workerData?.port as number
         }/`
       )