0

事情是这样的:

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

这是代码

快递服务器:

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 和端口(在模块之外?

任何帮助,将不胜感激。

4

1 回答 1

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);

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

于 2013-03-07T20:03:29.873 回答