Así que estoy codificando esta web en Heroku e intento integrar un socket en la configuración. Pero el problema es que no puedo hacer que mi aplicación Heroku y el servidor socket.io escuchen el mismo puerto.
El puerto predeterminado para Heroku parece ser 5000 y para socket.io parece ser 3000.
Si trato de cambiar cualquiera de los puertos al mismo que el otro, aparece el error EADDRINUSE.
Sin embargo, si no lo hago, entonces los dos procesos parecen operar por separado.
cuando ejecuto npm start , la terminal dice
Listening on 5000 listening on xoxo 3000 Y cuando encendí localhost:3000 , en realidad funciona (el socket.io), pero en localhost:5000 obviamente no funciona. De hecho, tampoco funciona en el sitio web que Heroku generó para mí (solo apareció localhost: 5000)
Las líneas de código a continuación son de mi archivo index.js.
¿Cómo podría arreglar esto? Gracias de antemano.
const express = require('express'); const app = express(); const path = require('path') const http = require('http'); const server = http.createServer(app); const { Server } = require("socket.io"); const io = new Server(server); const PORT = process.env.PORT || 5000; const INDEX = '/index.ejs' app.listen(PORT, () => console.log(`Listening on ${ PORT }`)) app.use(express.static(path.join(__dirname, 'public'))); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.get('/', (req, res) => res.render('index')); io.on('connection', (socket) => { socket.on('playerEvent', (msg) => { console.log(msg); }); console.log('a user connected'); socket.on('disconnect', () => { console.log('user disconnected'); }); socket.broadcast.emit('hi'); }); server.listen(3000, () => { console.log('listening on xoxo 3000'); }); //socket.on('playerEvent', function(msg){ // console.log(msg); //});