@@ -63,6 +63,8 @@ export function Socket(options) {
63
63
}
64
64
emitter . emit ( 'data' , buffer ) ;
65
65
} ) ;
66
+ } else if ( typeof data === 'string' && ws . protocol === 'base64' ) {
67
+ emitter . emit ( 'data' , new Buffer ( data , 'base64' ) ) ;
66
68
} else {
67
69
emitter . emit ( 'data' , data ) ;
68
70
}
@@ -81,17 +83,24 @@ export function Socket(options) {
81
83
} ;
82
84
83
85
this . write = data => {
84
- // Convert data (string or node.js Buffer) to ArrayBuffer for WebSocket
85
- const arrayBuffer = new ArrayBuffer ( data . length ) ;
86
- const view = new Uint8Array ( arrayBuffer ) ;
87
- for ( let i = 0 ; i < data . length ; ++ i ) {
88
- view [ i ] = data [ i ] ;
86
+ // Convert data (string or node.js Buffer) to ArrayBuffer or base64 string
87
+ // for WebSocket
88
+ let outgoingMessage = null ;
89
+ if ( ws . protocol === 'base64' ) {
90
+ outgoingMessage = ( new Buffer ( data ) ) . toString ( 'base64' ) ;
91
+ } else {
92
+ const arrayBuffer = new ArrayBuffer ( data . length ) ;
93
+ const view = new Uint8Array ( arrayBuffer ) ;
94
+ for ( let i = 0 ; i < data . length ; ++ i ) {
95
+ view [ i ] = data [ i ] ;
96
+ }
97
+ outgoingMessage = arrayBuffer ;
89
98
}
90
99
const delay = this . _simulatedLatencyMs ;
91
100
if ( typeof delay === 'number' && delay > 0 ) {
92
- setTimeout ( ( ) => ws . send ( arrayBuffer ) , delay ) ;
101
+ setTimeout ( ( ) => ws . send ( outgoingMessage ) , delay ) ;
93
102
} else {
94
- ws . send ( arrayBuffer ) ;
103
+ ws . send ( outgoingMessage ) ;
95
104
}
96
105
} ;
97
106
0 commit comments