2012-05-02 6 views
7

나는 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를 배우는 길에 있지만, 웹에있는 설명서는 거의 없다.

코드의 문제점을 알려주고, 더 나은 구현 방법을 알고 있다면 공유하십시오. 감사합니다.

답변

3

첫 번째 요청이 도착할 때 주제를 완료하면 관찰 가능 시퀀스가 ​​끝납니다. 다시 시도해주세요.

도움이되기를 바랍니다. rx_http.js에서 대신 Rx.AsyncSubject의

아멧 알리 아 카스

+0

AsyncSubject 나는 이런 짓을하고 어떻게 그것을 수신와 node_module 요청을 사용하는 ... – MaxWillmo

5

사용 Rx.Subject.

AsyncSubject는 onNext()의 마지막 값을 캐시에 저장하고 완료되면 모든 옵저버에게 전달합니다.

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를 사용하는 방법 ? –