1

2つのノードサーバーがあります。1つはポート5000(「Face」と呼びます)に、もう1つはポート5001(「Hands」と呼びます)にあります。

両方とも、フォアマンprocfileを介して同時に開始されます。ポートは修正されており、ターゲットにしているURLはブラウザで機能します。

Handsが起動したら、Face(Facepalm?)と話し、自分自身を登録する必要があります。ただし、以下のコードは機能していないようです。(これはコーヒースクリプトで生成されたJSです)

レジスタは、httpサーバーが開始された後、サーバーの初期化中に呼び出されます。タイミングの問題である場合は、2秒のsetTimeout()でレジスタ関数を開始します。そのヒット(/ home / register)が利用可能で機能しているページを知っています。

今、私はそれが「Postingto」コンソールログ行に到達するのを見ることができます。フェイスでは、console.logをレジスタコードに配置しましたが、ログに記録されることはありません。つまり、実際にヒットすることはないと思います。(ブラウザからヒットした場合はログに記録されます)エラーは発生しません。リクエストを呼び出してから、サンドイッチを取得するためにさまよっています。

どちらのサーバーも「独自のロール」であり、フレームワークを使用していません。奇妙なタイプミスが表示された場合、または詳細情報が必要な場合はお知らせください。ありがとう!

register = function() {
    var _this = this;
    console.log('Registering with Face Server');
    return post_face('/home/register', GLOBAL.data, function(rs) {
      console.log(rs);
      if (rs.registered) {
        GLOBAL.data.registered = true;
        return console.log("Registered with face at " + GLOBAL.config.face_host + ":" + GLOBAL.config.face_port);
      } else {
        throw "ERROR: Could not register with face server! " + GLOBAL.config.face_host + ":" + GLOBAL.config.face_port;
        return false;
      }
    });
  };

  post_face = function(path, data, cb) {
    var post_data, post_options, post_req;
    post_data = querystring.stringify({
      'registration': data
    });
    post_options = {
      host: GLOBAL.config.face_host,
      port: GLOBAL.config.face_port,
      path: path,
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': post_data.length
      }
    };
    console.log("Posting to " + post_options.host + ":" + post_options.port);
    post_req = http.request(post_options, function(res) {
      var response,
        _this = this;
      console.log(res);
      response = "";
      res.setEncoding('utf8');
      res.on('data', function(chunk) {
        return response += chunk;
      });
      return res.on('end', function() {
        return cb.call(_this, response);
      });
    });
    return true;
  };
4

1 に答える 1

0

上記のビルのおかげで、答えは私が実際にデータを投稿してリクエストを終了していなかったということでした!私が参照していたいくつかのサンプルからの悪いコピー/貼り付け/編集。これが私が持っていたはずのコードの最後の2行です:

post_req.write(post_data);
post_req.end();
于 2012-10-15T11:43:53.973 に答える