@@ -8,6 +8,7 @@ const uuid = require('uuid');
8
8
const WebSocket = require ( '../..' ) ;
9
9
10
10
const app = express ( ) ;
11
+ const map = new Map ( ) ;
11
12
12
13
//
13
14
// We need the same instance of the session parser in express and
@@ -37,8 +38,12 @@ app.post('/login', function(req, res) {
37
38
} ) ;
38
39
39
40
app . delete ( '/logout' , function ( request , response ) {
41
+ const ws = map . get ( request . session . userId ) ;
42
+
40
43
console . log ( 'Destroying session' ) ;
41
44
request . session . destroy ( function ( ) {
45
+ if ( ws ) ws . close ( ) ;
46
+
42
47
response . send ( { result : 'OK' , message : 'Session destroyed' } ) ;
43
48
} ) ;
44
49
} ) ;
@@ -47,7 +52,7 @@ app.delete('/logout', function(request, response) {
47
52
// Create HTTP server by ourselves.
48
53
//
49
54
const server = http . createServer ( app ) ;
50
- const wss = new WebSocket . Server ( { noServer : true } ) ;
55
+ const wss = new WebSocket . Server ( { clientTracking : false , noServer : true } ) ;
51
56
52
57
server . on ( 'upgrade' , function ( request , socket , head ) {
53
58
console . log ( 'Parsing session from request...' ) ;
@@ -67,13 +72,19 @@ server.on('upgrade', function(request, socket, head) {
67
72
} ) ;
68
73
69
74
wss . on ( 'connection' , function ( ws , request ) {
75
+ const userId = request . session . userId ;
76
+
77
+ map . set ( userId , ws ) ;
78
+
70
79
ws . on ( 'message' , function ( message ) {
71
80
//
72
81
// Here we can now use session parameters.
73
82
//
74
- console . log (
75
- `Received message ${ message } from user ${ request . session . userId } `
76
- ) ;
83
+ console . log ( `Received message ${ message } from user ${ userId } ` ) ;
84
+ } ) ;
85
+
86
+ ws . on ( 'close' , function ( ) {
87
+ map . delete ( userId ) ;
77
88
} ) ;
78
89
} ) ;
79
90
0 commit comments