我正在尝试从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')
)
答案 0 :(得分:2)
您正在尝试将前端和后端技术结合起来。如果你想在节点中使用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')
)
有许多实现,但总体设计是相同的。试试这个,看看你是否还有其他错误。