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

    };

このコードは機能します。それが正しいかどうか、またはネットモジュールを含めてソケットサーバーの IP とポートをメインの js ファイル内 (モジュールの外?

どんな助けでも大歓迎です。

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 に答える