RxJS + Node.js Http 请求
RxJS + Node.js Http Request
Nodejs 服务器端实现:如何使用https://www.npmjs.com/package/request with https://www.npmjs.com/package/rx to make GET request to https://www.reddit.com/r/javascript.json?
目标:每当我使用的任何站点发生数据更改时,我都会尝试实现持续流式传输api url。
你想创建一个观察者从回调通知的观察者。尝试类似的东西:
rx.Observable.create(function (observer) {
request('https://www.reddit.com/r/javascript.json', function (error, response, body) {
if (error) { observer.onError(); }
else { observer.onNext({response: response, body: body }); }
observer.onCompleted();
})
})
.map(/* do something */)
.subscribe();
很遗憾,当 https://www.reddit.com/r/javascript.json
更新时,您将无法收到更新,因为他们无法将此信息推送给客户端。
Github 等服务可让您注册一个 webhook
,这将使他们能够将数据推送到您服务器上的端点。我不确定 Reddit 是否支持这个。
作为替代解决方案,并基于 AkkarinZA 在他的回答中所说的内容,您可以使用类似于以下内容的方式轮询 json 文档:
var fetchContent = function(url) {
return rx.Observable.create(function (observer) {
request(url, function (error, response, body) {
if (error) { observer.onError(); }
else { observer.onNext({response: response, body: body }); }
observer.onCompleted();
})
});
};
rx.Observable.interval(1000)
.map(function() { return 'https://www.reddit.com/r/javascript.json' })
.flatMap(fetchContent)
.map(/* do something */)
.subscribe();
这样的轮询不是一个好方法。
Nodejs 服务器端实现:如何使用https://www.npmjs.com/package/request with https://www.npmjs.com/package/rx to make GET request to https://www.reddit.com/r/javascript.json?
目标:每当我使用的任何站点发生数据更改时,我都会尝试实现持续流式传输api url。
你想创建一个观察者从回调通知的观察者。尝试类似的东西:
rx.Observable.create(function (observer) {
request('https://www.reddit.com/r/javascript.json', function (error, response, body) {
if (error) { observer.onError(); }
else { observer.onNext({response: response, body: body }); }
observer.onCompleted();
})
})
.map(/* do something */)
.subscribe();
很遗憾,当 https://www.reddit.com/r/javascript.json
更新时,您将无法收到更新,因为他们无法将此信息推送给客户端。
Github 等服务可让您注册一个 webhook
,这将使他们能够将数据推送到您服务器上的端点。我不确定 Reddit 是否支持这个。
作为替代解决方案,并基于 AkkarinZA 在他的回答中所说的内容,您可以使用类似于以下内容的方式轮询 json 文档:
var fetchContent = function(url) {
return rx.Observable.create(function (observer) {
request(url, function (error, response, body) {
if (error) { observer.onError(); }
else { observer.onNext({response: response, body: body }); }
observer.onCompleted();
})
});
};
rx.Observable.interval(1000)
.map(function() { return 'https://www.reddit.com/r/javascript.json' })
.flatMap(fetchContent)
.map(/* do something */)
.subscribe();
这样的轮询不是一个好方法。