节点JS作为HTTP服务器和tcp套接字客户端一次

时间:2016-06-10 16:23:50

标签: javascript node.js sockets tcp

我正在创建节点js应用程序作为与tcp套接字服务器通信的http服务器,代码看起来像这样:

var http = require('http');
var net = require('net');
var url = require('url') ;
const PORT=8080;
var client = new net.Socket();
    client.connect(9000,'xxx.xxx.xxx.xxx', function(){
    console.log('Connected');
});
function handleRequest(request, response){
    var qo = url.parse(request.url,true).query;
        if(typeof qo.q=="undefined"){
            response.end("ERROR");
        }else{
            client.write(decodeURIComponent(qo.q));
            client.on('data',function(data){
            response.writeHead(200, {'Content-Type': 'text/html','Access-Control-Allow-Headers':'Content-Type,Access-Control-Allow-Headers,Access-Control-Allow-Origin,X-Powered-ByX-Powered-By','Access-Control-Allow-Origin': '*','X-Powered-By':'Poltak ganteng'});
            response.end(data);
            });
        }
}

var server = http.createServer(handleRequest);
server.listen(PORT, function(){
        console.log("Server listening on: http://localhost:%s", PORT);
});

我担心代码无法正常处理多个请求。有没有办法处理多个请求并获得对请求者的正确响应?

2 个答案:

答案 0 :(得分:0)

你想在套接字连接中使用req / res,你想在每个client.write发送你的其他服务使用相同的uid响应,以保持关系一对一地req / res,你不要&#39对于保证的单一性有其他选择。

答案 1 :(得分:0)

有一个昂贵的资源,因为TCP客户端(或客户端)必须在节点请求之间共享,因此socket-pool可以帮助您。