@@ -9,6 +9,7 @@ const { randomBytes } = require('crypto');
9
9
const createWebSocketStream = require ( '../lib/stream' ) ;
10
10
const Sender = require ( '../lib/sender' ) ;
11
11
const WebSocket = require ( '..' ) ;
12
+ const { EMPTY_BUFFER } = require ( '../lib/constants' ) ;
12
13
13
14
describe ( 'createWebSocketStream' , ( ) => {
14
15
it ( 'is exposed as a property of the `WebSocket` class' , ( ) => {
@@ -58,11 +59,12 @@ describe('createWebSocketStream', () => {
58
59
} ) ;
59
60
60
61
wss . on ( 'connection' , ( ws ) => {
61
- ws . on ( 'message' , ( message ) => {
62
+ ws . on ( 'message' , ( message , isBinary ) => {
62
63
ws . on ( 'close' , ( code , reason ) => {
63
- assert . ok ( message . equals ( chunk ) ) ;
64
+ assert . deepStrictEqual ( message , chunk ) ;
65
+ assert . ok ( isBinary ) ;
64
66
assert . strictEqual ( code , 1005 ) ;
65
- assert . strictEqual ( reason , '' ) ;
67
+ assert . strictEqual ( reason , EMPTY_BUFFER ) ;
66
68
wss . close ( done ) ;
67
69
} ) ;
68
70
} ) ;
@@ -229,7 +231,7 @@ describe('createWebSocketStream', () => {
229
231
ws . _socket . write ( Buffer . from ( [ 0x85 , 0x00 ] ) ) ;
230
232
ws . on ( 'close' , ( code , reason ) => {
231
233
assert . strictEqual ( code , 1002 ) ;
232
- assert . strictEqual ( reason , '' ) ;
234
+ assert . deepStrictEqual ( reason , EMPTY_BUFFER ) ;
233
235
234
236
serverClientCloseEventEmitted = true ;
235
237
if ( duplexCloseEventEmitted ) wss . close ( done ) ;
@@ -538,5 +540,33 @@ describe('createWebSocketStream', () => {
538
540
} ) ;
539
541
} ) ;
540
542
} ) ;
543
+
544
+ it ( 'converts text messages to strings in readable object mode' , ( done ) => {
545
+ const wss = new WebSocket . Server ( { port : 0 } , ( ) => {
546
+ const events = [ ] ;
547
+ const ws = new WebSocket ( `ws://localhost:${ wss . address ( ) . port } ` ) ;
548
+ const duplex = createWebSocketStream ( ws , { readableObjectMode : true } ) ;
549
+
550
+ duplex . on ( 'data' , ( data ) => {
551
+ events . push ( 'data' ) ;
552
+ assert . strictEqual ( data , 'foo' ) ;
553
+ } ) ;
554
+
555
+ duplex . on ( 'end' , ( ) => {
556
+ events . push ( 'end' ) ;
557
+ duplex . end ( ) ;
558
+ } ) ;
559
+
560
+ duplex . on ( 'close' , ( ) => {
561
+ assert . deepStrictEqual ( events , [ 'data' , 'end' ] ) ;
562
+ wss . close ( done ) ;
563
+ } ) ;
564
+ } ) ;
565
+
566
+ wss . on ( 'connection' , ( ws ) => {
567
+ ws . send ( 'foo' ) ;
568
+ ws . close ( ) ;
569
+ } ) ;
570
+ } ) ;
541
571
} ) ;
542
572
} ) ;
0 commit comments