【问题标题】:rxjs5 - no WebSocket constructor can be foundrxjs5 - 找不到 WebSocket 构造函数
【发布时间】:2016-04-26 04:38:34
【问题描述】:

我正在尝试做一些基本的事情,但它完全让我望而却步。我正在尝试在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@ 987654328@ 我正在尝试,但我仍然收到错误。

我试过了:

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 消费时,谁能帮我弄清楚如何使用 available via rxjs5webSocket Observable? (节点 v5.11)

【问题讨论】:

    标签: typescript commonjs rxjs5


    【解决方案1】:

    这与 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 模块中也是必需的。

    【讨论】:

    • 这是正确答案。我知道是因为我在 RxJS 5 中编写了代码。;) ... 如果您在没有 window.WebSocket 或 global.WebSocket 的环境中运行,例如 Node.js,它不会自动找到,这意味着您需要以上述方式提供一个。
    • 感谢你们俩。 @BenLesh我在主电子过程中做一些事情,这就是我遇到这个的原因。如果你愿意,我会从 node 写一些关于客户端使用的文档并提交 PR。
    猜你喜欢
    • 2018-06-05
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2014-04-23
    • 2013-01-16
    • 2012-05-23
    • 1970-01-01
    相关资源
    最近更新 更多