【问题标题】:socket hang up node 0.8.17套接字挂断节点 0.8.17
【发布时间】:2013-08-18 23:58:56
【问题描述】:

我在执行发布请求时收到“套接字挂断”错误。我无法解决它。

  sparqlQ = getSPARQLPrefix() + query_string;
  console.log(sparqlQ)
  var options = {
    host: process.env['SESAME_HOST'],
    port: process.env['SESAME_PORT'],
    method: 'POST',
    path:
      '/openrdf-sesame/repositories/myReo?update=' +
      encodeURIComponent(sparqlQ) +
      '&content-type=application/sparql-results+json',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept': 'application/sparql-results+json',
    },
  };

  var req = http.request(options, function(res) {
    var data = "";
    res.on('data', function (chunk) {
      data += chunk;
    });
    res.on('error', function (error) {
      console.log(error)
    });
    res.on('end', function () {
       console.log(data)
       req.end();
       callback(null);
    });
  }).on('error', function(e) {
    console.alert("Error getting sesame response [%s]", e.message);
    req.end();
    callback(e.message);
    return
  });

我做错了什么?请帮忙!

【问题讨论】:

  • 升级你的节点版本。这就是您需要做的所有事情。
  • 或者监听req.socket上的错误
  • 如果我使用 req.socket('error', ..)...然后它说 TypeError: Object # has no method 'socket'
  • @JonathanOng - 你有没有提到你可以在这里发布的错误/问题?

标签: node.js


【解决方案1】:

这里要提两件事。


你没有在你的http request上调用req.end()

在 node.js 的 http 模块上引用 this documentation

使用 http.request() 必须始终调用 req.end() 来表示 您已完成请求 - 即使没有写入数据 到请求正文。


req.error 事件中,您正在调用console.alert,我认为应该是console.log


这是一个示例代码

http = require("http"); 
var options = {
    host: "localhost",
    port: 80,
    method: 'POST'      
};

var req = http.request(options, function(res) {

    var data = "";
    res.on('data', function (chunk) {
        data += chunk;
    });
    res.on('error', function (error) { });
    res.on('end', function () {
        console.log(data)
        req.end();
        console.log(null);
    });

}).on('error', function(e) {

        console.log("Error getting sesame response [%s]", e.message);
        req.end();
        console.log(e.message);
        return

});

req.end();

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 2015-05-03
    • 1970-01-01
    • 2015-10-30
    • 2013-06-14
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多