RxJS + node.js HTTP服务器实现?
直到RxJS实现之前,我一直使用node.js。RxJS + node.js HTTP服务器实现?
这里是我的审判代码studying-
反应的扩展/ rxjs节点 https://github.com/Reactive-Extensions/rxjs-node
rx_http.js
(node.js中的HTTP LIB的RxJS包装)
var Rx = require("./rx.min");
var http = require("http");
for(var k in http)
{
exports[k] = http[k];
}
exports.createServer = function()
{
var subject = new Rx.AsyncSubject();
var observable = subject.asObservable();
observable.server = http.createServer(function (request, response)
{
subject.onNext({ request:request, response:response });
subject.onCompleted();
});
return observable;
};
个
server.js
var http = require('./rx_http');
// rxServer
var serverObservable = http.createServer();
var port = 3000;
serverObservable.server.listen(port);
console.log("Server listening on port: "+port);
// HTTP request event loop function
serverObservable.subscribe(function (data)
{
var req = data.request;
console.log(req.headers);
var res = data.response;
res.writeHead(200, {'Content-Type':"text/html"});
res.end("hello world");
console.log("res content out");
});
// exceptiopn
process.on('uncaughtException', function (err)
{
console.log(['Caught exception:', err.message].join(" "));
});
的代码结束了一次“世界你好”输出到浏览器,并且RxServer停止反应,以另一接入(brwoser重载等)。
我正在学习RxJS的东西,但很少有文档在网上找到。
告诉我代码有什么问题,如果你知道更好的实现,请分享。 谢谢。
当第一个请求到达时,在主题上调用on完成可观察序列。你能否再次尝试删除该行。
我希望它有帮助。
艾哈迈德·阿里Akkas
使用Rx.Subject代替Rx.AsyncSubject在rx_http.js。
AsyncSubject缓存onNext()的最后一个值,并在完成时传播给所有观察者。 AsyncSubject
exports.createServer = function()
{
var subject = new Rx.Subject();
var observable = subject.asObservable();
observable.server = http.createServer(function (request, response)
{
subject.onNext({ request:request, response:response });
});
return observable;
};
知道怎样使用,其中Rx node_module请求? Nodejs服务器端的实现。如何使用https://www.npmjs.com/package/request和https://www.npmjs.com/package/rx向GET请求https://www.reddit.com/r/javascript.json ? –
我做到这一点,它提出的所有要求只是挂... – MaxWillmo