1

我有两台节点服务器,一台在端口 5000(称为“Face”),另一台在端口 5001(称为“Hands”)

两者同时通过工头 procfile 启动。端口是固定的,我定位的 url 在浏览器中有效。

当 Hands 启动时,它需要与 Face(Facepalm?)对话并注册自己。但是,下面的代码似乎不起作用。(这是咖啡脚本生成的 JS)

在 http 服务器启动后,在服务器初始化期间调用 Register。如果是时间问题,我会以 2 秒的 setTimeout() 启动注册函数。我知道它的点击 (/home/register) 可用且正在工作的页面。

现在我可以看到它到达“发布到”控制台日志行。在 Face 上,我在注册码中放了一个 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

感谢上面的比尔,答案是我实际上并没有发布数据并结束请求!我所指的一些示例的复制/粘贴/编辑错误。这是我应该拥有的最后两行代码:

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