From 86acbd187a5474f37e4472754dc0ee6d266e65fc Mon Sep 17 00:00:00 2001 From: Mateusz Podlasin Date: Fri, 10 Feb 2017 17:57:15 +0100 Subject: [PATCH] feat(webSocket): Add binaryType to config object Add binaryType to config object, so that it is possible to set that parameter on underlying socket before any data emits happen. Closes #2353 --- spec/observables/dom/webSocket-spec.ts | 15 +++++++++++++++ src/observable/dom/WebSocketSubject.ts | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/spec/observables/dom/webSocket-spec.ts b/spec/observables/dom/webSocket-spec.ts index 975f27e071..548f2cc961 100644 --- a/spec/observables/dom/webSocket-spec.ts +++ b/spec/observables/dom/webSocket-spec.ts @@ -261,6 +261,20 @@ describe('Observable.webSocket', () => { subject.unsubscribe(); }); + it('should take a binaryType and set it properly on the web socket', () => { + const subject = Observable.webSocket({ + url: 'ws://mysocket', + binaryType: 'blob' + }); + + subject.subscribe(); + + const socket = MockWebSocket.lastSocket; + expect(socket.binaryType).to.equal('blob'); + + subject.unsubscribe(); + }); + it('should take a resultSelector', () => { const results = []; @@ -632,6 +646,7 @@ class MockWebSocket { readyState: number = 0; closeCode: any; closeReason: any; + binaryType?: string; constructor(public url: string, public protocol: string) { MockWebSocket.sockets.push(this); diff --git a/src/observable/dom/WebSocketSubject.ts b/src/observable/dom/WebSocketSubject.ts index 4f92a27f14..f5707d37ba 100644 --- a/src/observable/dom/WebSocketSubject.ts +++ b/src/observable/dom/WebSocketSubject.ts @@ -18,6 +18,7 @@ export interface WebSocketSubjectConfig { closeObserver?: NextObserver; closingObserver?: NextObserver; WebSocketCtor?: { new(url: string, protocol?: string|Array): WebSocket }; + binaryType?: 'blob' | 'arraybuffer'; } /** @@ -34,6 +35,7 @@ export class WebSocketSubject extends AnonymousSubject { closeObserver: NextObserver; closingObserver: NextObserver; WebSocketCtor: { new(url: string, protocol?: string|Array): WebSocket }; + binaryType?: 'blob' | 'arraybuffer'; private _output: Subject; @@ -159,6 +161,9 @@ export class WebSocketSubject extends AnonymousSubject { new WebSocketCtor(this.url, this.protocol) : new WebSocketCtor(this.url); this.socket = socket; + if (this.binaryType) { + this.socket.binaryType = this.binaryType; + } } catch (e) { observer.error(e); return;