0

从我的 bluemix 空间中的节点化实例通过安全网关访问 Tririga OSLC api 时出现错误。Tririga 服务器托管在我位于印度浦那的办公室中。Bluemix 区域位于美国南部。

错误:

Error: socket hang up : cap-sg-prd-3.integration.ibmcloud.com:15343/tririga/oslc/spq/triAllParkingLotsQC?oslc.select=*&oslc.where=spi:cstSensorId=15 

SyntaxError: undefined:1 Error: socket hang up :  ^ Unexpected token E

使用邮递员访问 URL 时没有问题。这与两个 DC 之间的链接速度有关吗?Bluemix 网关的速度测试显示上行链路和下行链路都有 200 毫秒的延迟。

更多信息: 我做了一个示例应用程序,将 Tririga 排除在外。在底部,您可以看到我在同一 Tririga 服务器上运行的示例节点应用程序代码。我在网关服务中创建了一个新目标,并尝试使用新目标的网关主机和端口通过 NodeRed 流访问 api。这个api也有同样的问题。

错误:套接字挂起:cap-sg-prd-3.integration.ibmcloud.com:17451/inventory

我在我的本地服务器控制台中看到以下服务器请求“/inventory”的两个控制台日志。

var express = require('express');

// create a new express server
var app = express();

var inventories= [
  { city : 'Beijing', quantity : 1000},
  { city : 'Shanghai', quantity : 500},
  { city : 'Guangzhou', quantity : 1000},
  { city : 'Shenzhen', quantity : 800}
];

//Get the inventory data
app.get('/inventory', function(req, res) {
  console.log("Request received");
  res.send({"code":1000, "inventory":inventories});
  console.log("Request sent");
});

app.listen(8000, function() {
   //print a message when the server starts listening
  console.log("server started on 8000");
});

另一项观察是,可以通过浏览器或邮递员毫无问题地访问http://cap-sg-prd-3.integration.ibmcloud.com:17451/inventory 。

4

1 回答 1

1

谢谢盖伦。我找到了原因。通过添加 keep-alive 标头,我设法解决了这个问题。为了准确起见,我在调用 URL 之前在我的 Node Red 函数中添加了以下内容。

[{"id":"ef815a6f.f94ed8","type":"function","z":"280728a8.c953b8","name":"Tririga session","func":"\nvar get_headers = flow. get(\"get_headers\");\n\nif (get_headers === null) {\n var sessionid = msg.headers['set-cookie'];\n msg.headers = {\"connection\": \"Keep-Alive: timeout=15, max=100\",\"cookie\":sessionid};\n flow.set(\"get_headers\",msg.headers);\n \n}\n\ nmsg.statusCode = \"\";\nmsg._msgid = \"\";\n\nreturn msg;","outputs":1,"noerr":0,"x":1697.9458847045898,"y":142.6542739868164 "电线":[["f110f408.7fc428"]]}]

于 2016-09-09T06:25:15.737 回答