Node js Express和Simple Socket Server

时间:2013-03-07 14:45:31

标签: node.js express

事情就是这样:

我想创建一个简单的API服务器,来自用户的请求被解析并转换为传输到套接字服务器的简单套接字消息。

这是代码

Express Server:

var express = require('express');

var app = express(),
    handler = require('./lib/urlparser.js');

app.get('/', function(req, res){
  var body = 'Hello World';
  res.setHeader('Content-Type', 'text/plain');
  res.setHeader('Content-Length', body.length);
  res.end(body);
});

app.get('/:command/:mode/:addr/:value', handler.handleRequest);

app.listen(80);
console.log('Listening on port 80...');

还有handleRequest模块

    exports.handleRequest = function(req, res) {

    var net = require('net');
    var HOST = '192.168.1.254';
    var PORT = 8888;
    var client = new net.Socket();

    /* translate the url params and save it to var request and send it */
    /* The code goes here */

        client.connect(PORT, HOST, function() {
            //console.log('Connected To: ' + HOST + ':' + PORT);
            client.setEncoding('utf-8');
            client.write(request);
            //console.log('Message Sent');
        });

        client.on('data', function(val) {
            //console.log('The Data: ' + val);
            res.send([{addr:'test'}, {value: val}]);
            client.destroy();
        });

        client.on('close', function() {
            //console.log('Connection closed');
        });

    };

这段代码有效,我只需知道它是否正确或是否有任何方法可以包含net模块并在主js文件中声明套接字服务器的ip和端口(模块外部?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您绝对可以将代码从模块移动到主文件。

首先,在主文件中,创建一个名为handleRequest的函数,该函数采用相同的变量,并且与handleRequest模块中的函数具有相同的主体。也就是说,

var handleRequest = function(req,res){
    var net = require('net')
    ...
    ...
}

其次,改变这一行:

app.get('/:command/:mode/:addr/:value', handler.handleRequest);

进入这个:

app.get('/:command/:mode/:addr/:value', handleRequest);

现在您不再需要包含该模块。 祝你好运!