Skip to content

Commit 2862c2f

Browse files
committed
[doc] Add error handlers to examples and code snippets
Closes #2112
1 parent a3214d3 commit 2862c2f

File tree

4 files changed

+52
-0
lines changed

4 files changed

+52
-0
lines changed

README.md

+36
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,8 @@ import WebSocket from 'ws';
155155

156156
const ws = new WebSocket('ws://www.host.com/path');
157157

158+
ws.on('error', console.error);
159+
158160
ws.on('open', function open() {
159161
ws.send('something');
160162
});
@@ -171,6 +173,8 @@ import WebSocket from 'ws';
171173

172174
const ws = new WebSocket('ws://www.host.com/path');
173175

176+
ws.on('error', console.error);
177+
174178
ws.on('open', function open() {
175179
const array = new Float32Array(5);
176180

@@ -190,6 +194,8 @@ import { WebSocketServer } from 'ws';
190194
const wss = new WebSocketServer({ port: 8080 });
191195

192196
wss.on('connection', function connection(ws) {
197+
ws.on('error', console.error);
198+
193199
ws.on('message', function message(data) {
194200
console.log('received: %s', data);
195201
});
@@ -212,6 +218,8 @@ const server = createServer({
212218
const wss = new WebSocketServer({ server });
213219

214220
wss.on('connection', function connection(ws) {
221+
ws.on('error', console.error);
222+
215223
ws.on('message', function message(data) {
216224
console.log('received: %s', data);
217225
});
@@ -234,10 +242,14 @@ const wss1 = new WebSocketServer({ noServer: true });
234242
const wss2 = new WebSocketServer({ noServer: true });
235243

236244
wss1.on('connection', function connection(ws) {
245+
ws.on('error', console.error);
246+
237247
// ...
238248
});
239249

240250
wss2.on('connection', function connection(ws) {
251+
ws.on('error', console.error);
252+
241253
// ...
242254
});
243255

@@ -266,16 +278,24 @@ server.listen(8080);
266278
import { createServer } from 'http';
267279
import { WebSocketServer } from 'ws';
268280

281+
function onSocketError(err) {
282+
console.error(err);
283+
}
284+
269285
const server = createServer();
270286
const wss = new WebSocketServer({ noServer: true });
271287

272288
wss.on('connection', function connection(ws, request, client) {
289+
ws.on('error', console.error);
290+
273291
ws.on('message', function message(data) {
274292
console.log(`Received message ${data} from user ${client}`);
275293
});
276294
});
277295

278296
server.on('upgrade', function upgrade(request, socket, head) {
297+
socket.on('error', onSocketError);
298+
279299
// This function is not defined on purpose. Implement it with your own logic.
280300
authenticate(request, function next(err, client) {
281301
if (err || !client) {
@@ -284,6 +304,8 @@ server.on('upgrade', function upgrade(request, socket, head) {
284304
return;
285305
}
286306

307+
socket.removeListener('error', onSocketError);
308+
287309
wss.handleUpgrade(request, socket, head, function done(ws) {
288310
wss.emit('connection', ws, request, client);
289311
});
@@ -306,6 +328,8 @@ import WebSocket, { WebSocketServer } from 'ws';
306328
const wss = new WebSocketServer({ port: 8080 });
307329

308330
wss.on('connection', function connection(ws) {
331+
ws.on('error', console.error);
332+
309333
ws.on('message', function message(data, isBinary) {
310334
wss.clients.forEach(function each(client) {
311335
if (client.readyState === WebSocket.OPEN) {
@@ -325,6 +349,8 @@ import WebSocket, { WebSocketServer } from 'ws';
325349
const wss = new WebSocketServer({ port: 8080 });
326350

327351
wss.on('connection', function connection(ws) {
352+
ws.on('error', console.error);
353+
328354
ws.on('message', function message(data, isBinary) {
329355
wss.clients.forEach(function each(client) {
330356
if (client !== ws && client.readyState === WebSocket.OPEN) {
@@ -342,6 +368,8 @@ import WebSocket from 'ws';
342368

343369
const ws = new WebSocket('wss://websocket-echo.com/');
344370

371+
ws.on('error', console.error);
372+
345373
ws.on('open', function open() {
346374
console.log('connected');
347375
ws.send(Date.now());
@@ -369,6 +397,8 @@ const ws = new WebSocket('wss://websocket-echo.com/');
369397

370398
const duplex = createWebSocketStream(ws, { encoding: 'utf8' });
371399

400+
duplex.on('error', console.error);
401+
372402
duplex.pipe(process.stdout);
373403
process.stdin.pipe(duplex);
374404
```
@@ -393,6 +423,8 @@ const wss = new WebSocketServer({ port: 8080 });
393423

394424
wss.on('connection', function connection(ws, req) {
395425
const ip = req.socket.remoteAddress;
426+
427+
ws.on('error', console.error);
396428
});
397429
```
398430

@@ -402,6 +434,8 @@ the `X-Forwarded-For` header.
402434
```js
403435
wss.on('connection', function connection(ws, req) {
404436
const ip = req.headers['x-forwarded-for'].split(',')[0].trim();
437+
438+
ws.on('error', console.error);
405439
});
406440
```
407441

@@ -425,6 +459,7 @@ const wss = new WebSocketServer({ port: 8080 });
425459

426460
wss.on('connection', function connection(ws) {
427461
ws.isAlive = true;
462+
ws.on('error', console.error);
428463
ws.on('pong', heartbeat);
429464
});
430465

@@ -466,6 +501,7 @@ function heartbeat() {
466501

467502
const client = new WebSocket('wss://websocket-echo.com/');
468503

504+
client.on('error', console.error);
469505
client.on('open', heartbeat);
470506
client.on('ping', heartbeat);
471507
client.on('close', function clear() {

examples/express-session-parse/index.js

+10
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ const uuid = require('uuid');
77

88
const { WebSocketServer } = require('../..');
99

10+
function onSocketError(err) {
11+
console.error(err);
12+
}
13+
1014
const app = express();
1115
const map = new Map();
1216

@@ -59,6 +63,8 @@ const server = http.createServer(app);
5963
const wss = new WebSocketServer({ clientTracking: false, noServer: true });
6064

6165
server.on('upgrade', function (request, socket, head) {
66+
socket.on('error', onSocketError);
67+
6268
console.log('Parsing session from request...');
6369

6470
sessionParser(request, {}, () => {
@@ -70,6 +76,8 @@ server.on('upgrade', function (request, socket, head) {
7076

7177
console.log('Session is parsed!');
7278

79+
socket.removeListener('error', onSocketError);
80+
7381
wss.handleUpgrade(request, socket, head, function (ws) {
7482
wss.emit('connection', ws, request);
7583
});
@@ -81,6 +89,8 @@ wss.on('connection', function (ws, request) {
8189

8290
map.set(userId, ws);
8391

92+
ws.on('error', console.error);
93+
8494
ws.on('message', function (message) {
8595
//
8696
// Here we can now use session parameters.

examples/server-stats/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ wss.on('connection', function (ws) {
2222
}, 100);
2323
console.log('started client interval');
2424

25+
ws.on('error', console.error);
26+
2527
ws.on('close', function () {
2628
console.log('stopping client interval');
2729
clearInterval(id);

examples/ssl.js

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ const server = https.createServer({
1313
const wss = new WebSocketServer({ server });
1414

1515
wss.on('connection', function connection(ws) {
16+
ws.on('error', console.error);
17+
1618
ws.on('message', function message(msg) {
1719
console.log(msg.toString());
1820
});
@@ -31,6 +33,8 @@ server.listen(function listening() {
3133
rejectUnauthorized: false
3234
});
3335

36+
ws.on('error', console.error);
37+
3438
ws.on('open', function open() {
3539
ws.send('All glory to WebSockets!');
3640
});

0 commit comments

Comments
 (0)