2017-02-15 132 views
0

首先我想說我是senecajs中的新成員。Seneca-web超時配置

我正在測試此配置。

我已經配置了端口9007上正在運行並正確處理請求的Senecjs microservice。當我直接請求這個服務時,我會在cca 10s後收到響應(這是對oracle db數據的請求)。

但是,當我請求相同的數據,但通過哈皮+塞內卡的web我收到此錯誤:「的StatusCode」:504,「錯誤」:「網關超時」

["client","invalid_origin",{"port":9007,"pin":"mc:bankgtw","pg":"mc:bankgtw","type":"web","id":"pg:mc:bankgtw,pin:mc:bankgtw,port:9007","role":"transport","hook":"client","plugin$":{"name":"client$"},"fatal$":true,"meta$":{"mi":"wbn8u45tb7uh","tx":"o3f8eyia3f4n","id":"wbn8u45tb7uh/o3f8eyia3f4n","pattern":"hook:client,role:transport,type:web","action":"(q1yytemztu3k)","plugin_name":"transport","plugin_tag":"-","prior":{"chain":[],"entry":true,"depth":0},"start":1487199713842,"sync":true},"tx$":"o3f8eyia3f4n","host":"0.0.0.0","path":"/act","protocol":"http","timeout":5555,"max_listen_attempts":11,"attempt_delay":222,"serverOptions":{}},{"kind":"res","res":null,"error":{"isBoom":true,"isServer":true,"output":{"statusCode":504,"payload":{**"statusCode":504,"error":"Gateway Time-out**","message":"Client request timeout"},"headers":{}}},"sync":true,"time":{"client_recv":1487199799177}}] 

一微服務返回數據之前幾秒鐘。

這是我的配置:

const Hapi = require('hapi'); 
const Seneca = require('seneca'); 
const SenecaWeb = require('seneca-web'); 

const config = { 
    adapter: require('seneca-web-adapter-hapi'), 
    context: (() => { 
    const server = new Hapi.Server(); 
    server.connection({ 
     port: 3001, 
     routes: { 
      cors: true, 
      payload:{timeout:60000}, 
      timeout:{server: 60000, socket:90000} 
     } 
    }); 

    server.route({ 
     path: '/routes', 
     method: 'get', 
     handler: (request, reply) => { 
     const routes = server.table()[0].table.map(route => { 
      return { 
      path: route.path, 
      method: route.method.toUpperCase(), 
      description: route.settings.description, 
      tags: route.settings.tags, 
      vhost: route.settings.vhost, 
      cors: route.settings.cors, 
      jsonp: route.settings.jsonp, 
      server: server.info 
      } 
     }) 
     reply(routes) 
     } 
    }); 

    return server; 
    })() 
}; 

const seneca = Seneca({timeout: 99999}) 
    .use(SenecaWeb, config) 
    .use(require('./hapi_api.js')) 
    .client({ port:9007, pin:'mc:bankgtw' }) 
    .ready(() => { 
    const server = seneca.export('web/context')(); 
    server.start(() => { 
     server.log('server started on: ' + server.info.uri); 
    }); 
    }); 

什麼,我做錯了還是什麼超時造成的?

+0

可能是某個回調沒有被調用。 –

回答

0

我有同樣的問題,修復它,但它的非常壞的做法。

在seneca-transport文件夾中轉到'transport.js'。 你會看到'超時:5555' 繼續前進,並將其改爲任何你需要的。

我不確定爲什麼這不是USER默認值。 據我所知,這是指客戶端超時。確保你仍然使用服務器超時。