@@ -40,6 +40,7 @@ export class $WebSocket {
4040 private reconnectableStatusCodes = [ 4000 ] ;
4141 private socket : WebSocket ;
4242 private dataStream : Subject < any > ;
43+ private errorMessages : Subject < any > ;
4344 private internalConnectionState : number ;
4445
4546 constructor ( private url : string , private protocols ?: Array < string > , private config ?: WebSocketConfig , private binaryType ?: BinaryType ) {
@@ -50,6 +51,7 @@ export class $WebSocket {
5051 this . config = config || { initialTimeout : 500 , maxTimeout : 300000 , reconnectIfNotNormalClose : false } ;
5152 this . binaryType = binaryType || "blob" ;
5253 this . dataStream = new Subject ( ) ;
54+ this . errorMessages = new Subject ( ) ;
5355 this . connect ( true ) ;
5456 }
5557
@@ -77,12 +79,16 @@ export class $WebSocket {
7779 this . socket . onerror = ( ev : ErrorEvent ) => {
7880 // console.log('onError ', ev);
7981 self . onErrorHandler ( ev ) ;
80- this . dataStream . error ( ev ) ;
82+ this . errorMessages . next ( ev ) ;
8183 } ;
8284
8385 }
8486 }
8587
88+ getErrorStream ( ) : Subject < any > {
89+ return this . errorMessages ;
90+ }
91+
8692 /**
8793 * Run in Block Mode
8894 * Return true when can send and false in socket closed
@@ -92,15 +98,15 @@ export class $WebSocket {
9298 send4Direct ( data , binary ?: boolean ) : boolean {
9399 let self = this ;
94100 if ( this . getReadyState ( ) !== this . readyStateConstants . OPEN
95- && this . getReadyState ( ) !== this . readyStateConstants . CONNECTING ) {
101+ && this . getReadyState ( ) !== this . readyStateConstants . CONNECTING ) {
96102 this . connect ( ) ;
97103 }
98104 self . sendQueue . push ( { message : data , binary : binary } ) ;
99105 if ( self . socket . readyState === self . readyStateConstants . OPEN ) {
100106 self . fireQueue ( ) ;
101107 return true ;
102108 } else {
103- return false ;
109+ return false ;
104110 }
105111 }
106112
@@ -113,13 +119,13 @@ export class $WebSocket {
113119 */
114120 send4Promise ( data , binary ?: boolean ) : Promise < any > {
115121 return new Promise (
116- ( resolve , reject ) => {
117- if ( this . send4Direct ( data , binary ) ) {
118- return resolve ( ) ;
119- } else {
120- return reject ( Error ( 'Socket connection has been closed' ) ) ;
121- }
122- }
122+ ( resolve , reject ) => {
123+ if ( this . send4Direct ( data , binary ) ) {
124+ return resolve ( ) ;
125+ } else {
126+ return reject ( Error ( 'Socket connection has been closed' ) ) ;
127+ }
128+ }
123129 )
124130 }
125131
@@ -197,7 +203,7 @@ export class $WebSocket {
197203 this . socket . send ( data . message ) ;
198204 } else {
199205 this . socket . send (
200- $WebSocket . Helpers . isString ( data . message ) ? data . message : JSON . stringify ( data . message )
206+ $WebSocket . Helpers . isString ( data . message ) ? data . message : JSON . stringify ( data . message )
201207 ) ;
202208 }
203209 // data.deferred.resolve();
@@ -256,7 +262,7 @@ export class $WebSocket {
256262 onCloseHandler ( event : CloseEvent ) {
257263 this . notifyCloseCallbacks ( event ) ;
258264 if ( ( this . config . reconnectIfNotNormalClose && event . code !== this . normalCloseCode )
259- || this . reconnectableStatusCodes . indexOf ( event . code ) > - 1 ) {
265+ || this . reconnectableStatusCodes . indexOf ( event . code ) > - 1 ) {
260266 this . reconnect ( ) ;
261267 } else {
262268 this . sendQueue = [ ] ;
0 commit comments