build(deps-dev): apply updates
[poolifier.git] / examples / typescript / websocket-server-pool / ws-cluster / src / main.ts
index ce9eb642e48fbff04e8a168e9dd11a2a53912958..16dd38d6a102af0eee66dbb842096195803fdae4 100644 (file)
@@ -1,7 +1,9 @@
 import { dirname, extname, join } from 'node:path'
 import { fileURLToPath } from 'node:url'
-import { FixedClusterPool, availableParallelism } from 'poolifier'
-import { type WorkerData, type WorkerResponse } from './types.js'
+
+import { availableParallelism, FixedClusterPool } from 'poolifier'
+
+import type { WorkerData, WorkerResponse } from './types.js'
 
 const workerFile = join(
   dirname(fileURLToPath(import.meta.url)),
@@ -12,31 +14,27 @@ const pool = new FixedClusterPool<WorkerData, WorkerResponse>(
   availableParallelism(),
   workerFile,
   {
+    enableEvents: false,
+    onlineHandler: () => {
+      pool
+        .execute({ port: 8080 })
+        .then(response => {
+          if (response.status) {
+            console.info(
+              `WebSocket server is listening in cluster worker on port ${response.port}`
+            )
+          }
+          return undefined
+        })
+        .catch((error: unknown) => {
+          console.error(
+            'WebSocket server failed to start in cluster worker:',
+            error
+          )
+        })
+    },
     errorHandler: (e: Error) => {
-      console.error(e)
+      console.error('Cluster worker 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)
-    })
-}