5

残りの API ノード サーバーの次のコードを検討してください。

var restify = require('restify');

var server = restify.createServer();

server.get('/echo/:name', function (req, res, next) {
  res.send({name: req.params.name});
  next();
});

server.listen(8080, function () {
  console.log('%s listening at %s', server.name, server.url);
});

ノードを使用してそのサーバーを実行します。

$ node echo.js
restify listening at http://0.0.0.0:8080

0.0.0.0どちらが間違っているかを示しています。

電源を入れたときにサーバーの正確な IP をログに記録する方法を教えてください。

ありがとう


更新: 次のコードを実行すると、以下の出力が得られますが、これも難しくなります。どの IP を選択すればよいですか?

    rest_server.listen(config.appPort, function () {
      var adrs = require('os').networkInterfaces();
          console.log(adrs);
          console.log('%s listening at %s', rest_server.name, rest_server.url);
    });

出力:

{ 'Local Area Connection': [ { address: '192.168.3.60', family: 'IPv4', internal
: false } ],
  'Loopback Pseudo-Interface 1':
   [ { address: '::1', family: 'IPv6', internal: true },
     { address: '127.0.0.1', family: 'IPv4', internal: true } ],
  'isatap.TEST.ORG':
   [ { address: 'fe80::5efe:c0a8:33c',
       family: 'IPv6',
       internal: false } ] }
restify listening at http://0.0.0.0:8080
4

3 に答える 3

5

同じ問題があり、問題を解決した場合、基本的に別のパラメーターを .listen() 関数に渡すことができ、それがサーバーの IP アドレスである必要があります

server.listen(port, [host], [backlog], [callback])


server.listen(port, YOUR IP ADDRESS, function(){ });

サーバーのIPアドレスを取得するには、ターミナルで「traceroute www.WEBSITE_URL.com」を実行してください。

まだ問題がある場合はお知らせください。

ありがとうマディ

于 2013-11-04T04:32:29.230 に答える
5

実際のアドレスを listen メソッドに設定できます。

http://mcavage.github.io/node-restify/#Server-APIおよびhttp://nodejs.org/docs/latest/api/net.html#net_server_listen_path_callback

server.address()サーバーがバインドされたアドレスを返す場合があります。

http://nodejs.org/docs/latest/api/net.html#net_server_address

于 2013-05-17T13:02:39.893 に答える
0

次のような解決策があります。

同じことに関する改善は常に歓迎されます。

var osDetails = require('os');

function getDynamicIP(calbck) {
    var ip;
    try {
        var adrs = osDetails.networkInterfaces();
        for (key in adrs) {
            if (adrs.hasOwnProperty(key)) {
                if (adrs[key][0].internal === false && adrs[key][0].family === 'IPv4') {
                    ip = adrs[key][0].address;
                    break;
                }
            }
        }
    }
    catch (e) {
        return calbck(e, null);
    }
    return calbck(null, ip);
}
于 2013-05-22T11:00:37.617 に答える