2

我正在尝试做一些基本的事情,但这完全让我望而却步。我正在尝试在RxJS5Observable中创建一个from ,但我没有使用 typescript 或 es6 模块……只是简单的 'ole good commonJS. 我已经设法根据文档正确地修补了 Observable,但是每当我尝试传入该主题的预期字符串时,我都会收到错误消息:rxjx/observable/dom/webSocket

no WebSocket constructor can be found[来源]

我还没有时间深入研究TypeScript,但据我所知,我已经满足了构造函数的条件,并且我还看了一下测试规范,它们都使用了相同的函数 Observable.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'
});

从 commonJS 消费时,谁能帮我弄清楚如何使用可通过 rxjs5 获得webSocket的Observable ?(节点 v5.11)

4

1 回答 1

2

这与 TypeScript 无关,您可能需要为 WebSocket 提供构造函数到 WebSocketSubject。

在测试用例中,https://github.com/ReactiveX/rxjs/blob/fd0823b99db92d1e214052ad506904b0d744d494/spec/observables/dom/webSocket-spec.ts#L14在root中指定它以全局覆盖websocket,同时也可以将其提供为像这样的配置对象

var ws = require('websocket');

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

甚至在 TypeScript 或 ES15 RxJS 模块中也是必需的。

于 2016-04-26T06:28:34.707 回答