RxJS 実装までは node.js に慣れていました。
これが私のトライアルコードの勉強です-
Reactive-Extensions / rxjs-node 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;
};
サーバー.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(" "));
});
コードはブラウザへの 1 回限りの「hello world」出力で終了し、RxServer は別のアクセス (ブラウザのリロードなど) への反応を停止します。
私はRxJSのことを学ぶ途中ですが、Web上で見つかったドキュメントはほとんどありません。
コードの何が問題なのか教えてください。より良い実装を知っている場合は、共有してください。ありがとうございました。