2012-05-02 18 views
7

私はRxJS実装までnode.jsでうまくいきました。ここでRxJS + node.js HTTPサーバー実装ですか?

は私の試用コードが反応-拡張機能/ rxjsノードstudying-

ある 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(" ")); 
}); 

コードがブラウザに一時間 'のHello World' の出力で終了し、RxServerは別のアクセス(brwoserリロードなど)に反応を停止します。

私はRxJSのことを学ぶ途中ですが、Web上で見つかったドキュメントはほとんどありません。

コードに何が間違っているか教えてください。また、実装が分かっている場合は、教えてください。 ありがとうございます。

答えて

3

最初の要求が到着したときに被験者が完了すると、観察可能なシーケンスが終了します。その行を削除してからもう一度試してください。

私はそれが役に立ちそうです。代わりにRx.AsyncSubjectの

アフメット・アリAkkas

+0

のRxとnode_module要求を使用する方法任意のアイデアを、私はこれをしなかったし、それがすべての要求がちょうどハング作ら... – MaxWillmo

5

使用Rx.Subject 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; 
}; 
+1

? Nodejsサーバー側の実装。 https://www.reddit.com/r/javascript.jsonへのGET要求を行うためにhttps://www.npmjs.com/package/requestでhttps://www.npmjs.com/package/rxを使用する方法? –

関連する問題