【问题标题】:How to create an observable from a websocket connection using rxjs如何使用 rxjs 从 websocket 连接创建 observable
【发布时间】:2018-01-18 23:03:20
【问题描述】:

我正在尝试从 rxjs 中的 websocket 连接创建一个 observable,但没有任何关于它在 nodejs 中工作的好的文档。

我找到的每个示例代码似乎都不起作用。 以下是我最近的尝试

失败了

ReferenceError: WebSocket 未定义

知道哪里出了问题或者我在哪里可以找到节点中实际工作的示例吗?

import * as Rx from 'rxjs/Rx'
import * as Rxdom from 'rx-dom'
const { WebSocketSubject } = require('rxjs/observable/dom/WebSocketSubject');
const WebSocket = require('ws')

const ws = new WebSocket('ws://www.host.com/path')


let openObserver = Rx.Observable.create(() => {
  console.info('socket open')
  socket.onNext('test')
})

let closingObserver = Rx.Observable.create(() => {
  console.log('socket is about to close');
})

socket = Rxdom.DOM.fromWebSocket(
  'ws://www.host.com/path',
  null,
  openObserver,
  closingObserver
)

socket.subscribe(
  msg => console.log(msg),
  err => console.log(err),
  () => console.log('complete')
)

【问题讨论】:

    标签: node.js websocket rxjs


    【解决方案1】:

    您正在尝试结合前端和后端技术。如果您想在节点中使用 RXJS,请查看 Richard Szalay here 接受的答案,他在其中简单地解释说 rs-node 是 rxjs 的包装器,用于 rxjs 上的节点特定用途。他还链接到rx-node npm 包。

    但是为了让你开始,我会简单地使用前端方法。

    另请注意,您正在尝试使用用于客户端实现的 rx-dom。

    为简单起见,您需要按照guidlines 使用 rxjs。

    入门所需的组件:

    <script src="rx.js"></script>// In the html
    ----------------------
    // js file or script
    var Rx = require('rx');
    
    let openObserver = Rx.Observer.create(() => {// change Observable to Observer
        console.info('socket open')
        socket.onNext('test')
    })
    
    let closingObserver = Rx.Observer.create(() => {// change Observable to Observer again
        console.log('socket is about to close');
    })
    
    socket = Rx.DOM.fromWebSocket(//Change to use Rx instead of Rxdom
        'ws://www.host.com/path',
        null,
        openObserver,
        closingObserver
    )
    
    socket.subscribe(
        msg => console.log(msg),
        err => console.log(err),
        () => console.log('complete')
    )
    

    有许多实现,但总体设计是相同的。试试这个,看看是否还有更多错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-02
      • 2018-12-13
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多