@@ -40,6 +40,7 @@ export class $WebSocket {
40
40
private reconnectableStatusCodes = [ 4000 ] ;
41
41
private socket : WebSocket ;
42
42
private dataStream : Subject < any > ;
43
+ private errorMessages : Subject < any > ;
43
44
private internalConnectionState : number ;
44
45
45
46
constructor ( private url : string , private protocols ?: Array < string > , private config ?: WebSocketConfig , private binaryType ?: BinaryType ) {
@@ -50,6 +51,7 @@ export class $WebSocket {
50
51
this . config = config || { initialTimeout : 500 , maxTimeout : 300000 , reconnectIfNotNormalClose : false } ;
51
52
this . binaryType = binaryType || "blob" ;
52
53
this . dataStream = new Subject ( ) ;
54
+ this . errorMessages = new Subject ( ) ;
53
55
this . connect ( true ) ;
54
56
}
55
57
@@ -77,12 +79,16 @@ export class $WebSocket {
77
79
this . socket . onerror = ( ev : ErrorEvent ) => {
78
80
// console.log('onError ', ev);
79
81
self . onErrorHandler ( ev ) ;
80
- this . dataStream . error ( ev ) ;
82
+ this . errorMessages . next ( ev ) ;
81
83
} ;
82
84
83
85
}
84
86
}
85
87
88
+ getErrorStream ( ) : Subject < any > {
89
+ return this . errorMessages ;
90
+ }
91
+
86
92
/**
87
93
* Run in Block Mode
88
94
* Return true when can send and false in socket closed
@@ -92,15 +98,15 @@ export class $WebSocket {
92
98
send4Direct ( data , binary ?: boolean ) : boolean {
93
99
let self = this ;
94
100
if ( this . getReadyState ( ) !== this . readyStateConstants . OPEN
95
- && this . getReadyState ( ) !== this . readyStateConstants . CONNECTING ) {
101
+ && this . getReadyState ( ) !== this . readyStateConstants . CONNECTING ) {
96
102
this . connect ( ) ;
97
103
}
98
104
self . sendQueue . push ( { message : data , binary : binary } ) ;
99
105
if ( self . socket . readyState === self . readyStateConstants . OPEN ) {
100
106
self . fireQueue ( ) ;
101
107
return true ;
102
108
} else {
103
- return false ;
109
+ return false ;
104
110
}
105
111
}
106
112
@@ -113,13 +119,13 @@ export class $WebSocket {
113
119
*/
114
120
send4Promise ( data , binary ?: boolean ) : Promise < any > {
115
121
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
+ }
123
129
)
124
130
}
125
131
@@ -197,7 +203,7 @@ export class $WebSocket {
197
203
this . socket . send ( data . message ) ;
198
204
} else {
199
205
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 )
201
207
) ;
202
208
}
203
209
// data.deferred.resolve();
@@ -256,7 +262,7 @@ export class $WebSocket {
256
262
onCloseHandler ( event : CloseEvent ) {
257
263
this . notifyCloseCallbacks ( event ) ;
258
264
if ( ( this . config . reconnectIfNotNormalClose && event . code !== this . normalCloseCode )
259
- || this . reconnectableStatusCodes . indexOf ( event . code ) > - 1 ) {
265
+ || this . reconnectableStatusCodes . indexOf ( event . code ) > - 1 ) {
260
266
this . reconnect ( ) ;
261
267
} else {
262
268
this . sendQueue = [ ] ;
0 commit comments