2016-04-26 17 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。 –

相关问题