Solución:
De acuerdo, después de investigar un poco, descubrí que abrir puertos en Heroku es discapacitado y No permitido.
los la única manera alrededor de esto es para usar subdominios y luego en la aplicación para usar un módulo proxy (como subdomain-router
que yo uso).
PERO – Heroku no le permite crear subdominios en su dominio, lo que significa que your-app.herokuapp.com
es fijo y no puede tener subdominios.
En los manuales de Heroku, le exigen que tenga su propio dominio y proveedor de dns para hacer tal cosa, creando un alias A (CNAME) en la tabla dns en la configuración de su dominio, que se referirá al dominio herokuapp de su aplicación, y luego usando El comando heroku domains:add
para agregar su dominio a la lista de origen permitido.
Usted puede leer más aquí. Proporciona toda la información que necesita.
Espero que haya ayudado a algunos.
Sé que esta es una publicación antigua, pero quería proporcionar una respuesta actualizada para referencia y uso futuro:
Si está utilizando socket-io, la vinculación al mismo puerto es fácil. Otras bibliotecas websocket deberían tener un enfoque similar (de https://github.com/socketio/socket.io#how-to-use):
Junto con Express A partir de 3.0, las aplicaciones express se han convertido en funciones de manejo de solicitudes que se pasan a las instancias del servidor http o http. Debe pasar el servidor a socket.io, y no a la función de aplicación rápida. También asegúrese de llamar a .listen en el servidor, no en la aplicación.
const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
io.on('connection', () => { /* … */ });
server.listen(3000);
Ahora tendrá tráfico http y ws fluyendo a través de un solo puerto (Heroku no enruta http / tcp por separado, si lo hiciera, sus websockets no funcionarían).
Prefiero este método debido a la paridad y las pruebas del entorno, es decir, no es necesario configurar subdominios o enrutamiento de puertos
También aprendí sobre esto hoy, aprendí que si ejecuta un servicio en un puerto en Heroku, aún puede acceder a él localmente. No funcionaría para la preocupación del usuario anterior, pero solucionó mi problema, lo que me llevó a esta pregunta.