2012-05-02 19 views
7

मैं RxJS कार्यान्वयन तक node.js के साथ अच्छी तरह से रहा हूँ।आरएक्सजेएस + 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 पुनः लोड आदि)।

मैं आरएक्सजेएस चीज सीखने के रास्ते पर हूं, लेकिन वेब पर कुछ दस्तावेज पाए गए हैं।

मुझे बताएं कि कोड के साथ क्या गलत है, और यदि आप बेहतर कार्यान्वयन जानते हैं, तो कृपया साझा करें। धन्यवाद।

उत्तर

3

पहला अनुरोध आने पर विषय पर अधूरा कॉलिंग देखने योग्य अनुक्रम समाप्त होता है। क्या आप उस लाइन को फिर से प्रयास करने के लिए हटा सकते हैं।

मुझे उम्मीद है कि यह मदद करता है।

अहमत अली अकास

+0

मैं ऐसा किया है और यह कैसे node_module Rx के साथ अनुरोध उपयोग करने के लिए सभी अनुरोधों को सिर्फ लटका बनाया ... – MaxWillmo

5

उपयोग rx_http.js में Rx.AsyncSubject के बजाय Rx.Subject।

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

किसी भी विचार? नोडज सर्वर साइड कार्यान्वयन। Https://www.npmjs.com/package/rquest https://www.npmjs.com/package/rx के साथ https://www.reddit.com/r/javascript.json पर अनुरोध करने के लिए https://www.npmjs.com/package/request का उपयोग कैसे करें ? –

संबंधित मुद्दे