2017-05-12 1 views
1

Ich bin neu zu Heroku und ich habe eine Meteorjs Anwendung auf Heroku eingesetzt. Meine Meteorjs-Anwendung ist eine Webapplikation, also läuft sie nach dem Build auf heroku auf Port 80. Gleichzeitig möchte ich aber auch auf einen Port zB 4000 oder irgendwas hören, damit ich meine Webhook-Events von Drittanbietern abfangen kann möchte hören. Auf meiner lokalen Maschine läuft es perfekt mit Webapp läuft auf einem Port und Listener läuft auf einem anderen, aber auf Heroku, nachdem ich es nur die Webapp, die läuft und Listener nicht zu hören. Kann mir jemand helfen oder mich führen? Alle neuen Lösungen sind auch willkommen ..Wie kann man an einem beliebigen Port auf Heroku hören, wenn ein Web-Port 80 bereits verwendet wird?

In meinem Server/main.js ich gemacht habe, einen Bot Instanz von facebook-bot-messenger und unten ist der Code, den Hörer zu starten

bot.listen(4000); 

In meinem Klienten /main.html ich habe den hTML-Code, der nur Hallo Welt ist

auf dem lokalen Rechner, wenn ich http://localhost:3000 besuchen kann ich Hello World und App auch hört auf Port 4000.

auf Heroku wenn ich https://appname.herokuapp.com besuchen i sehen Hallo Welt . In diesem Fall ist der Port 80, was in Ordnung ist, aber der Bot hört nicht auf, da irgendwelche Postanrufe, die ich auf https://appname.heroku.com auf Port 4000 mache, nicht antwortet.

+0

Können Sie Ihre Frage bearbeiten, um den Code, wo Sie gerade zuhören? Normalerweise können Sie eine beliebige Anzahl von Serverendpunkten erstellen. – tadman

+0

bearbeitet die Frage, jede neue Lösung wird mir auch helfen .. Ich habe gerade erst mit Heroku heute begonnen und ich weiß nicht, welche Änderungen ich in Heroku oder meinem Code genau tun sollte, um dies zu haben .. – Chetan

Antwort

2

Heroku weist den Port für Sie zu, sodass Sie keinen eigenen festlegen können. Sie müssen die Portnummer von der Umgebungsvariablen PORT einlesen. Im Knoten wäre dies process.env.PORT

Sie können auch || für wie und ODER verwenden. Im folgenden Fall wird beispielsweise die Portnummer von der Umgebungsvariable auf Heroku gelesen, aber lokal wird standardmäßig der Port 4000 verwendet.

const app = express(); 
app.set('port', (process.env.PORT || 4000)); 

//Start Server 
app.listen(app.get('port'), function() { 
    console.log('Node app is running on port', app.get('port')); 
}); 
Verwandte Themen