File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import cluster from 'node:cluster'
12import { WebSocketServer } from 'ws'
3+ import { cpus } from 'node:os'
24
3- const server = new WebSocketServer ( { port : 5001 } )
5+ if ( cluster . isPrimary ) {
6+ let cpu = cpus ( ) . length
7+ while ( cpu -- > 0 ) {
8+ cluster . fork ( )
9+ }
10+ } else {
11+ const server = new WebSocketServer ( {
12+ maxPayload : 600 * 1024 * 1024 ,
13+ perMessageDeflate : false ,
14+ clientTracking : false ,
15+ port : 5001
16+ } )
17+
18+ server . on ( 'connection' , ( socket ) => {
19+ socket . on ( 'message' , ( data , isBinary ) => {
20+ socket . send ( data , { binary : isBinary } )
21+ // socket.close();
22+ } )
23+ } )
424
5- server . on ( 'connection' , ( socket ) => {
6- socket . on ( 'message' , ( data , isBinary ) => {
7- socket . send ( data , { binary : isBinary } )
8- // socket.close();
25+ cluster . on ( 'exit' , ( ) => {
26+ server . close ( )
927 } )
10- } )
28+ }
Original file line number Diff line number Diff line change 1+ import cluster from 'node:cluster'
12import { WebSocketServer } from 'ws'
3+ import { cpus } from 'node:os'
24
3- const server = new WebSocketServer ( { port : 5001 } )
5+ if ( cluster . isPrimary ) {
6+ let cpu = cpus ( ) . length
7+ while ( cpu -- > 0 ) {
8+ cluster . fork ( )
9+ }
10+ } else {
11+ const server = new WebSocketServer ( {
12+ maxPayload : 600 * 1024 * 1024 ,
13+ perMessageDeflate : false ,
14+ clientTracking : false ,
15+ port : 5001
16+ } )
17+
18+ // Workaround for https://github.com/nodejs/undici/issues/3202
19+ const emptyBuffer = Buffer . allocUnsafe ( 1 )
420
5- // Workaround for https://github.com/nodejs/undici/issues/3202
6- const emptyBuffer = Buffer . allocUnsafe ( 1 )
21+ server . on ( 'connection' , ( socket ) => {
22+ socket . on ( 'message' , ( _data , _isBinary ) => {
23+ socket . send ( emptyBuffer )
24+ // socket.close();
25+ } )
26+ } )
727
8- server . on ( 'connection' , ( socket ) => {
9- socket . on ( 'message' , ( _data , _isBinary ) => {
10- socket . send ( emptyBuffer )
11- // socket.close();
28+ cluster . on ( 'exit' , ( ) => {
29+ server . close ( )
1230 } )
13- } )
31+ }
Original file line number Diff line number Diff line change 1+ // --------------------SERVER--------------------
2+ // -> /server/echo.mjs
3+ // ----------------------------------------------
4+
15import { WebSocket as WsWebSocket } from 'ws'
26import { WebSocket as UndiciWebSocket } from '../../index.js'
37import { randomBytes } from 'node:crypto'
Original file line number Diff line number Diff line change 1+ // --------------------SERVER--------------------
2+ // -> /server/simple.mjs
3+ // ----------------------------------------------
4+
15import { WebSocket as WsWebSocket } from 'ws'
26import { WebSocket as UndiciWebSocket } from '../../index.js'
37import { bench , run , group } from 'mitata'
@@ -15,7 +19,6 @@ const url = 'http://localhost:5001'
1519group ( 'open connection' , ( ) => {
1620 bench ( 'ws' , ( ) => {
1721 const ws = new WsWebSocket ( url )
18- ws . binaryType = 'fragments'
1922 return new Promise ( ( resolve , reject ) => {
2023 ws . addEventListener ( 'open' , ( ) => {
2124 resolve ( )
Original file line number Diff line number Diff line change 1+ // --------------------SERVER--------------------
2+ // -> /server/simple.mjs
3+ // ----------------------------------------------
4+
15import { WebSocket as WsWebSocket } from 'ws'
26import { WebSocket as UndiciWebSocket } from '../../index.js'
37import { randomBytes } from 'node:crypto'
Original file line number Diff line number Diff line change 1+ // --------------------SERVER--------------------
2+ // -> /server/simple.mjs
3+ // ----------------------------------------------
4+
15import { WebSocket as WsWebSocket } from 'ws'
26import { WebSocket as UndiciWebSocket } from '../../index.js'
37import { randomBytes } from 'node:crypto'
You can’t perform that action at this time.
0 commit comments