rxjs5 - 找不到 WebSocket 构造函数

rxjs5 - no WebSocket constructor can be found

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

no WebSocket constructor can be found, [source].

我还没有时间深入研究 TypeScript,但据我所知,我已经满足了构造函数的条件,而且我还看了测试规范,they use the function in the same way 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 消费时使用 webSocket Observable,即 available via rxjs5? (节点 v5.11)

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

在测试用例中,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 模块中也是必需的。