@@ -15,8 +15,10 @@ const http = require('http');
15
15
const numCPUs = require (' os' ).cpus ().length ;
16
16
17
17
if (cluster .isMaster ) {
18
+ console .log (` Master ${ process .pid } is running` );
19
+
18
20
// Fork workers.
19
- for (var i = 0 ; i < numCPUs; i++ ) {
21
+ for (let i = 0 ; i < numCPUs; i++ ) {
20
22
cluster .fork ();
21
23
}
22
24
@@ -30,17 +32,20 @@ if (cluster.isMaster) {
30
32
res .writeHead (200 );
31
33
res .end (' hello world\n ' );
32
34
}).listen (8000 );
35
+
36
+ console .log (` Worker ${ process .pid } started` );
33
37
}
34
38
```
35
39
36
40
Running Node.js will now share port 8000 between the workers:
37
41
38
42
``` txt
39
- $ NODE_DEBUG=cluster node server.js
40
- 23521,Master Worker 23524 online
41
- 23521,Master Worker 23526 online
42
- 23521,Master Worker 23523 online
43
- 23521,Master Worker 23528 online
43
+ $ node server.js
44
+ Master 3596 is running
45
+ Worker 4324 started
46
+ Worker 4520 started
47
+ Worker 6056 started
48
+ Worker 5644 started
44
49
```
45
50
46
51
Please note that on Windows, it is not yet possible to set up a named pipe
@@ -202,27 +207,27 @@ const http = require('http');
202
207
if (cluster .isMaster ) {
203
208
204
209
// Keep track of http requests
205
- var numReqs = 0 ;
210
+ let numReqs = 0 ;
206
211
setInterval (() => {
207
- console .log (' numReqs =' , numReqs);
212
+ console .log (` numReqs = ${ numReqs} ` );
208
213
}, 1000 );
209
214
210
215
// Count requests
211
216
function messageHandler (msg ) {
212
- if (msg .cmd && msg .cmd == ' notifyRequest' ) {
217
+ if (msg .cmd && msg .cmd === ' notifyRequest' ) {
213
218
numReqs += 1 ;
214
219
}
215
220
}
216
221
217
222
// Start workers and listen for messages containing notifyRequest
218
223
const numCPUs = require (' os' ).cpus ().length ;
219
- for (var i = 0 ; i < numCPUs; i++ ) {
224
+ for (let i = 0 ; i < numCPUs; i++ ) {
220
225
cluster .fork ();
221
226
}
222
227
223
- Object . keys ( cluster .workers ). forEach (( id ) => {
228
+ for ( const id in cluster .workers ) {
224
229
cluster .workers [id].on (' message' , messageHandler);
225
- });
230
+ }
226
231
227
232
} else {
228
233
@@ -287,8 +292,8 @@ the `'disconnect'` event has not been emitted after some time.
287
292
288
293
``` js
289
294
if (cluster .isMaster ) {
290
- var worker = cluster .fork ();
291
- var timeout;
295
+ const worker = cluster .fork ();
296
+ let timeout;
292
297
293
298
worker .on (' listening' , (address ) => {
294
299
worker .send (' shutdown' );
@@ -304,7 +309,7 @@ if (cluster.isMaster) {
304
309
305
310
} else if (cluster .isWorker ) {
306
311
const net = require (' net' );
307
- var server = net .createServer ((socket ) => {
312
+ const server = net .createServer ((socket ) => {
308
313
// connections never end
309
314
});
310
315
@@ -430,7 +435,7 @@ This example will echo back all messages from the master:
430
435
431
436
``` js
432
437
if (cluster .isMaster ) {
433
- var worker = cluster .fork ();
438
+ const worker = cluster .fork ();
434
439
worker .send (' hi there' );
435
440
436
441
} else if (cluster .isWorker ) {
@@ -526,7 +531,7 @@ When a new worker is forked the cluster module will emit a `'fork'` event.
526
531
This can be used to log worker activity, and create your own timeout.
527
532
528
533
``` js
529
- var timeouts = [];
534
+ const timeouts = [];
530
535
function errorMsg () {
531
536
console .error (' Something must be wrong with the connection ...' );
532
537
}
@@ -590,7 +595,7 @@ If you need to support older versions and don't need the worker object,
590
595
you can work around the discrepancy by checking the number of arguments:
591
596
592
597
``` js
593
- cluster .on (' message' , function (worker , message , handle ) {
598
+ cluster .on (' message' , (worker , message , handle ) => {
594
599
if (arguments .length === 2 ) {
595
600
handle = message;
596
601
message = worker;
@@ -809,7 +814,7 @@ before last `'disconnect'` or `'exit'` event is emitted.
809
814
``` js
810
815
// Go through all workers
811
816
function eachWorker (callback ) {
812
- for (var id in cluster .workers ) {
817
+ for (const id in cluster .workers ) {
813
818
callback (cluster .workers [id]);
814
819
}
815
820
}
@@ -823,7 +828,7 @@ the worker's unique id is the easiest way to find the worker.
823
828
824
829
``` js
825
830
socket .on (' data' , (id ) => {
826
- var worker = cluster .workers [id];
831
+ const worker = cluster .workers [id];
827
832
});
828
833
```
829
834
0 commit comments