2016-04-26 28 views
2

我試圖做一些基本的事情,但它完全躲避我。我試圖創建Observablerxjx/observable/dom/webSocketRxJS5,但我沒有使用打字稿,或es6模塊...只是普通'ole好commonJS。我已經設法根據文檔正確地修補Observable,但每當我嘗試傳入預期的主題字符串時,我都會收到錯誤:rxjs5 - 沒有WebSocket的構造函數可以找到

no WebSocket constructor can be found[source]

我還沒來得及鑽進去打字稿呢,但是從我所知道的,我已經滿足了構造的條件,而且我也採取了看看測試規範,並they use the function in the same wayObservable.webSocket('ws://host:port');我試圖,但我仍然得到一個錯誤。

我已經試過:

var Rx = require('rxjs/Rx'); 
require('rxjs/Rx.dom').webSocketSubject; //also tried just using `.webSocket` 

var source = Rx.Observable.webSocket('ws://localhost:53311'); 

source.subscribe(); 

我還試圖傳遞一個對象Rx.Observable.webSocket

var source = Rx.Observable.webSocket({ 
    url: 'ws://host:port' 
}); 

誰能幫助我弄清楚如何使用webSocket可觀察到這available via rxjs5,當從commonJS消費? (節點v5.11)

回答

2

這不是關於TypeScript,你可能需要提供websocket到WebSocketSubject的構造函數。

在測試情況下,https://github.com/ReactiveX/rxjs/blob/fd0823b99db92d1e214052ad506904b0d744d494/spec/observables/dom/webSocket-spec.ts#L14指定它在根到全局覆蓋的WebSocket,而它也可以提供它作爲配置對象像

var ws = require('websocket'); 

socket = new WebSocketSubject({ 
    url: 'ws://....', 
    WebSocketCtor: ws.w3cwebsocket 
}); 

即使在打字原稿或ES15 RxJS模塊所需爲好。

+1

這是正確的答案。我知道是因爲我在RxJS 5中編寫了代碼;;)...如果你在一個沒有window.WebSocket或global.WebSocket的環境中運行,就像Node.js一樣,它不會自動找到它,這意味着您需要以上述方式提供一個。 –

+0

感謝你們兩位。 @BenLesh我在主電子程序中做了一些東西,這就是爲什麼我會遇到這個問題。如果您希望我會撰寫一些關於客戶端節點使用情況的文檔並提交PR。 –

相關問題