@@ -3011,27 +3011,6 @@ describe('WebSocket', () => {
3011
3011
} ) ;
3012
3012
3013
3013
it ( 'consumes all received data when connection is closed (2/2)' , ( done ) => {
3014
- const payload1 = Buffer . alloc ( 15 * 1024 ) ;
3015
- const payload2 = Buffer . alloc ( 1 ) ;
3016
-
3017
- const opts = {
3018
- fin : true ,
3019
- opcode : 0x02 ,
3020
- mask : false ,
3021
- readOnly : false
3022
- } ;
3023
-
3024
- const list = [
3025
- ...Sender . frame ( payload1 , { rsv1 : false , ...opts } ) ,
3026
- ...Sender . frame ( payload2 , { rsv1 : true , ...opts } )
3027
- ] ;
3028
-
3029
- for ( let i = 0 ; i < 399 ; i ++ ) {
3030
- list . push ( list [ list . length - 2 ] , list [ list . length - 1 ] ) ;
3031
- }
3032
-
3033
- const data = Buffer . concat ( list ) ;
3034
-
3035
3014
const wss = new WebSocket . Server (
3036
3015
{
3037
3016
perMessageDeflate : true ,
@@ -3049,15 +3028,37 @@ describe('WebSocket', () => {
3049
3028
3050
3029
const push = ws . _socket . push ;
3051
3030
3031
+ // Override `ws._socket.push()` to know exactly when data is
3032
+ // received and call `ws.terminate()` immediately after that without
3033
+ // relying on a timer.
3052
3034
ws . _socket . push = ( data ) => {
3053
3035
ws . _socket . push = push ;
3054
3036
ws . _socket . push ( data ) ;
3055
3037
ws . terminate ( ) ;
3056
3038
} ;
3057
3039
3040
+ const payload1 = Buffer . alloc ( 15 * 1024 ) ;
3041
+ const payload2 = Buffer . alloc ( 1 ) ;
3042
+
3043
+ const opts = {
3044
+ fin : true ,
3045
+ opcode : 0x02 ,
3046
+ mask : false ,
3047
+ readOnly : false
3048
+ } ;
3049
+
3050
+ const list = [
3051
+ ...Sender . frame ( payload1 , { rsv1 : false , ...opts } ) ,
3052
+ ...Sender . frame ( payload2 , { rsv1 : true , ...opts } )
3053
+ ] ;
3054
+
3055
+ for ( let i = 0 ; i < 399 ; i ++ ) {
3056
+ list . push ( list [ list . length - 2 ] , list [ list . length - 1 ] ) ;
3057
+ }
3058
+
3058
3059
// This hack is used because there is no guarantee that more than
3059
3060
// 16 KiB will be sent as a single TCP packet.
3060
- push . call ( ws . _socket , data ) ;
3061
+ push . call ( ws . _socket , Buffer . concat ( list ) ) ;
3061
3062
3062
3063
wss . clients
3063
3064
. values ( )
0 commit comments