Node.JS, Express y Heroku: ¿cómo manejar HTTP y HTTPS?

Tengo una aplicación que es bastante normal. Aplicación Express: lógica de servidor simple, vistas, gran cantidad de JS del lado del cliente. Tengo que hacer muchas solicitudes de AJAX. Algunos de ellos deben estar protegidos por el protocolo HTTPS (otros no).

Por lo tanto, mi servidor debería funcionar tanto con HTTP como con HTTPS. También debería funcionar tanto en la máquina local (normalmente con nodemon) como en Heroku.

Por lo que he entendido, Heroku te da un solo puerto (process.env.PORT) que puedes escuchar y maneja todas las solicitudes a través del proxy (entonces, tu aplicación está escuchando este puerto y no se preocupa por el protocolo, ¿verdad? )

Entonces, ¿estoy entendiendo esto? ¿Debería tener algún código diferente para dev machine y Heroku?

Me gusta

...
app = express()
...

if process.env.NODE_ENV == 'production'
  app.listen(process.env.PORT)
else
  https = require('https')
  http = require('http')
  http.createServer(app).listen(5080) # some local port
  options = {
    key: fs.readFileSync('key.pem'), 
    cert: fs.readFileSync('cert.pem') # my self-signed files
  }
  https.createServer(options, app).listen(5443) # some different local port

¿Es la forma correcta de lidiar con esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta