@@ -281,8 +281,8 @@ function sendErrorMessage (req, res, code) {
281
281
* @api public
282
282
*/
283
283
284
- Server . prototype . generateId = function ( req ) {
285
- return base64id . generateId ( ) ;
284
+ Server . prototype . generateId = function ( req , callback ) {
285
+ callback ( null , base64id . generateId ( ) ) ;
286
286
} ;
287
287
288
288
/**
@@ -294,52 +294,56 @@ Server.prototype.generateId = function (req) {
294
294
*/
295
295
296
296
Server . prototype . handshake = function ( transportName , req ) {
297
- var id = this . generateId ( req ) ;
298
-
299
- debug ( 'handshaking client "%s"' , id ) ;
300
-
301
- try {
302
- var transport = new transports [ transportName ] ( req ) ;
303
- if ( 'polling' === transportName ) {
304
- transport . maxHttpBufferSize = this . maxHttpBufferSize ;
305
- transport . httpCompression = this . httpCompression ;
306
- } else if ( 'websocket' === transportName ) {
307
- transport . perMessageDeflate = this . perMessageDeflate ;
297
+ var self = this ;
298
+ this . generateId ( req , function ( err , id ) {
299
+ if ( err ) {
300
+ sendErrorMessage ( req , req . res , Server . errors . BAD_REQUEST ) ;
301
+ return ;
308
302
}
303
+ debug ( 'handshaking client "%s"' , id ) ;
304
+
305
+ try {
306
+ var transport = new transports [ transportName ] ( req ) ;
307
+ if ( 'polling' === transportName ) {
308
+ transport . maxHttpBufferSize = self . maxHttpBufferSize ;
309
+ transport . httpCompression = self . httpCompression ;
310
+ } else if ( 'websocket' === transportName ) {
311
+ transport . perMessageDeflate = self . perMessageDeflate ;
312
+ }
309
313
310
- if ( req . _query && req . _query . b64 ) {
311
- transport . supportsBinary = false ;
312
- } else {
313
- transport . supportsBinary = true ;
314
+ if ( req . _query && req . _query . b64 ) {
315
+ transport . supportsBinary = false ;
316
+ } else {
317
+ transport . supportsBinary = true ;
318
+ }
319
+ } catch ( e ) {
320
+ sendErrorMessage ( req , req . res , Server . errors . BAD_REQUEST ) ;
321
+ return ;
322
+ }
323
+ var socket = new Socket ( id , self , transport , req ) ;
324
+
325
+ if ( false !== self . cookie ) {
326
+ transport . on ( 'headers' , function ( headers ) {
327
+ headers [ 'Set-Cookie' ] = cookieMod . serialize ( self . cookie , id ,
328
+ {
329
+ path : self . cookiePath ,
330
+ httpOnly : self . cookiePath ? self . cookieHttpOnly : false
331
+ } ) ;
332
+ } ) ;
314
333
}
315
- } catch ( e ) {
316
- sendErrorMessage ( req , req . res , Server . errors . BAD_REQUEST ) ;
317
- return ;
318
- }
319
- var socket = new Socket ( id , this , transport , req ) ;
320
- var self = this ;
321
334
322
- if ( false !== this . cookie ) {
323
- transport . on ( 'headers' , function ( headers ) {
324
- headers [ 'Set-Cookie' ] = cookieMod . serialize ( self . cookie , id ,
325
- {
326
- path : self . cookiePath ,
327
- httpOnly : self . cookiePath ? self . cookieHttpOnly : false
328
- } ) ;
329
- } ) ;
330
- }
335
+ transport . onRequest ( req ) ;
331
336
332
- transport . onRequest ( req ) ;
337
+ self . clients [ id ] = socket ;
338
+ self . clientsCount ++ ;
333
339
334
- this . clients [ id ] = socket ;
335
- this . clientsCount ++ ;
340
+ socket . once ( 'close' , function ( ) {
341
+ delete self . clients [ id ] ;
342
+ self . clientsCount -- ;
343
+ } ) ;
336
344
337
- socket . once ( 'close' , function ( ) {
338
- delete self . clients [ id ] ;
339
- self . clientsCount -- ;
345
+ self . emit ( 'connection' , socket ) ;
340
346
} ) ;
341
-
342
- this . emit ( 'connection' , socket ) ;
343
347
} ;
344
348
345
349
/**
0 commit comments