Skip to content

Commit 54ef0cf

Browse files
krojewafrad
authored andcommitted
Binary data support (afrad#75)
* Binary data support * Typo
1 parent 2ca1be1 commit 54ef0cf

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

src/angular2-websocket.ts

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,13 @@ export class $WebSocket {
8989
* @param data
9090
* @returns {boolean}
9191
*/
92-
send4Direct(data): boolean {
92+
send4Direct(data, binary?: boolean): boolean {
9393
let self = this;
9494
if (this.getReadyState() !== this.readyStateConstants.OPEN
9595
&& this.getReadyState() !== this.readyStateConstants.CONNECTING) {
9696
this.connect();
9797
}
98-
self.sendQueue.push({message: data});
98+
self.sendQueue.push({message: data, binary: binary});
9999
if (self.socket.readyState === self.readyStateConstants.OPEN) {
100100
self.fireQueue();
101101
return true;
@@ -111,10 +111,10 @@ export class $WebSocket {
111111
* @param data
112112
* @returns {Promise<any>}
113113
*/
114-
send4Promise(data): Promise<any> {
114+
send4Promise(data, binary?: boolean): Promise<any> {
115115
return new Promise(
116116
(resolve, reject) => {
117-
if (this.send4Direct(data)) {
117+
if (this.send4Direct(data, binary)) {
118118
return resolve();
119119
} else {
120120
return reject(Error('Socket connection has been closed'));
@@ -130,9 +130,9 @@ export class $WebSocket {
130130
* @param data
131131
* @returns {Observable<any>}
132132
*/
133-
send4Observable(data): Observable<any> {
133+
send4Observable(data, binary?: boolean): Observable<any> {
134134
return Observable.create((observer) => {
135-
if (this.send4Direct(data)) {
135+
if (this.send4Direct(data, binary)) {
136136
return observer.complete();
137137
} else {
138138
return observer.error('Socket connection has been closed');
@@ -155,16 +155,17 @@ export class $WebSocket {
155155
* If no specify, Default SendMode is Observable mode
156156
* @param data
157157
* @param mode
158+
* @param binary
158159
* @returns {any}
159160
*/
160-
send(data: any, mode?: WebSocketSendMode): any {
161+
send(data: any, mode?: WebSocketSendMode, binary?: boolean): any {
161162
switch (typeof mode !== "undefined" ? mode : this.send4Mode) {
162163
case WebSocketSendMode.Direct:
163-
return this.send4Direct(data);
164+
return this.send4Direct(data, binary);
164165
case WebSocketSendMode.Promise:
165-
return this.send4Promise(data);
166+
return this.send4Promise(data, binary);
166167
case WebSocketSendMode.Observable:
167-
return this.send4Observable(data);
168+
return this.send4Observable(data, binary);
168169
default:
169170
throw Error("WebSocketSendMode Error.");
170171
}
@@ -192,9 +193,13 @@ export class $WebSocket {
192193
let data = this.sendQueue.shift();
193194

194195
// console.log("fireQueue: ", data);
195-
this.socket.send(
196-
$WebSocket.Helpers.isString(data.message) ? data.message : JSON.stringify(data.message)
197-
);
196+
if (data.binary) {
197+
this.socket.send(data.message);
198+
} else {
199+
this.socket.send(
200+
$WebSocket.Helpers.isString(data.message) ? data.message : JSON.stringify(data.message)
201+
);
202+
}
198203
// data.deferred.resolve();
199204
}
200205
}

0 commit comments

Comments
 (0)