2016-09-07 6 views
0

Я получаю сообщение об ошибке при доступе к Tririga OSLC api через безопасный шлюз из моего экземпляра nodered в моем пространстве bluemix. Сервер Tririga размещен в моем офисе в Пуне, Индия. Зона Bluemix - США-Юг.Интермиттантный сбой API через Secure Gateway

Ошибка:

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, с почтальоном. Это что-то связано со скоростью связи между двумя контроллерами домена? Тест скорости шлюза Bluemix показывает задержку в 200 мс для ссылок вверх и вниз.

Дополнительная информация: Я сделал образец приложения, чтобы удалить Tririga из вопроса. Внизу вы можете увидеть мой пример кода приложения узла, который работает на одном сервере Tririga. Я создал новый пункт назначения в шлюзе и попытался получить доступ к api через поток NodeRed, используя хост и порт шлюза для нового адресата. Этот апи тоже имеет ту же проблему.

Ошибка: гнездо вешает: cap-sg-prd-3.integration.ibmcloud.com:17451/inventory

Я вижу, как консольные журналы запроса ниже серверов «/ инвентаризация» напечатанного в моем on- сервер консоли. более

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 можно получить доступ через браузер или почтальона без каких-либо проблем.

+0

Является ли ваш Secure Gateway Client генерирующим любые журналы при выполнении этого запроса? –

+0

Привет, Гален, я на отслеживании уровня журнала. Что такое повторяющийся клиентский журнал, как показано ниже. [2016-09-07 16: 06: 50.429] [INFO] (ID клиента 1tndU6uPzOP_5Ay) Соединение № 179 устанавливается в 10.46.40.145:8001 [2016-09-07 16: 06: 50.491] [INFO] (ID клиента 1tndU6uPzOP_5da) Соединение № 177 до 10.46.40.145:8001 было закрыто [2016-09-07 16: 06: 50.913] [INFO] (идентификатор клиента 1tndU6uPzOP_O0L) Соединение № 136 устанавливается в 10.46.40.145:8001 [ 2016-09-07 16: 06: 51.194] [INFO] (идентификатор клиента 1tndU6uPzOP_5Ay) Соединение № 179 с 10.46.40.145:8001 было закрыто –

+0

Итак, клиент не сообщает о каких-либо ошибках. Какую версию клиента вы используете, и когда вы загрузили установщик/вытащили изображение докера? –

ответ

1

Спасибо Гален. Я понял причину. Добавив заголовок keep-alive, мне удалось решить проблему. Чтобы быть точным, я добавил следующее к моей функции Node Red перед вызовом URL.

[{"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; "," выходы ": 1," noerr ": 0," x ": 1697.9458847045898," y ": 142.6542739868164," провода ": [[" f110f408.7fc428 "]]}]

Смежные вопросы