2017-04-21 16 views
0

私は接続しようとしています:Google Homeデバイス - > API.AI Webhook - > RPi/nodejs API.AIウェブフックにはhttps URLが必要です。 IveはHurl.itを試して、私のルーターのhttp URLにPOSTし、リクエストをrpiに達するようにポート転送をセットアップし、要求に適切に応答するnodejsを実行している端末からポストが来るのを見ることができます。HTTPS POSTサーバからrpi-nodejsへのリンクスイッチのリクエスト

しかし、Hurl.itをhttps:// urlに変更すると、ルータのポート転送を同じrpiアドレスへのルーティング443要求に変更し、80から443でリッスンするnodejsアプリケーションの.envポートを変更します私はPOSTリクエストを実行した場合、ルータのログは、HTTPS要求を記録したがnodejsアプリが応答しない...、それだけでここでポート443をリッスンし続けるapp.jsへのリンクです:

KylesAppjsCode

nodejsサーバーアプリケーションが要求を取得していない理由、または受信した場合に要求に応答しないのはなぜですか?

答えて

2

app.listen() currently always uses http、決してHTTPS、独自のカスタムHTTPSサーバーを作成し、要求ハンドラとしてappを渡す必要がありますので:私はことを「作成」することができ

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

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

の代わりに、 nginxのサーバーですか?私はそれをやる方法はわかりませんが、私は他のところでその提案を受けました。 – marciokoko

+0

あなたはそれを設定することができますが、チュートリアルが豊富にあります。しかし、このような特定の問題については、 'https.createServer()'を自分で呼び出す必要があります。 – mscdex

+0

私はついにnginxをインストールして設定しました。しかし、sudo npm startを実行すると 'Error:listen EADDRINUSE ::: 443'と表示されます。私のルータIPへの元のhttpポスト(rpinodejs lan ipに転送されました)が成功し、nginxのダミーhtmlページのhttps://subdomain.domain.comリクエストも成功しました。 – marciokoko

関連する問題