2017-04-21 109 views
0

我試圖連接:Google Home設備 - > API.AI Webhook - > RPi/nodejs,但API.AI webhook需要https URL。我試過Hurl.it POST到我的路由器的http url,並建立端口轉發以使請求到達rpi,並且我可以看到從運行nodejs的終端進來的帖子,該終端響應請求。HTTPS POST通過linksys路由器從服務器到rpi-nodejs的請求

但是,當我將Hurl.it更改爲https:// url時,將路由器的端口轉發更改爲路由443請求到相同的rpi地址,並將偵聽的nodejs應用的.env端口更改爲443 ...如果我運行POST請求,路由器日誌記錄了HTTPS請求,但應用程序的NodeJS不響應,它只是不斷偵聽端口443這是在app.js鏈接:

KylesAppjsCode

如何找出爲什麼nodejs服務器應用程序未獲取請求,或者如果它收到請求,那麼爲什麼它沒有響應請求?

回答

2

app.listen() currently always uses http永不HTTPS,所以你需要創建自己的自定義HTTPS服務器,並通過app的請求處理:

require('https').createServer({ /* https config */ }, app) 
       .listen(process.env.PORT, function() { 
    console.log('Listening on port ' + process.env.PORT); 
}); 

代替:

app.listen(process.env.PORT, function() { 
    console.log('Listening on port ' + process.env.PORT); 
}); 
+0

我可以「創造」是服務器與Nginx?我不知道該怎麼做,但我在別處得到了這個建議。 – marciokoko

+0

你可以設置它,然而你想要的,有教程嘉豪在線。但是,對於這個特殊問題,您需要自己調用https.createServer()。 – mscdex

+0

好吧,我最終安裝並配置了nginx。但是在運行sudo npm start時出現'Error:listen EADDRINUSE ::: 443'。請注意,我的路由器ip(轉發給rpinodejs lan ip)的原始http發佈成功,並且nginx上的虛擬html頁面的https://subdomain.domain.com請求也成功。 – marciokoko

相關問題