Estoy creando una aplicación node.js que usa socket.io y express.
El código se ve así-
const express=require('express'); const app=express(); const http=require('http').Server(app); app.use(express.static('public')); const io=require('socket.io')(http,{ cors:{origin:'*'} }); http.listen(3000,()=>{ console.log('listening to port 3000'); }); //when connection made io.on('connection',(socket)=>{ console.log('connection made!'); });Aquí, public es una carpeta que contiene todos los archivos html del sitio web.
Ahora, cuando lo ejecuto localmente en mi PC, funciona bien. Pero cuando lo implementé en los servidores de glitch.com, aparece este error:
Error: listen EADDREINUSE: address already in use :::3000Hasta donde yo sé, 3000 es el único puerto disponible en falla y no puedo usar otro puerto.
Además, las preguntas sobre el desbordamiento de pila relacionadas con este tema no me ayudan, ya que la mayoría de las respuestas están relacionadas con eliminar las tareas en ejecución y no tengo permiso para hacerlo en el servidor.
Esto sucede a menudo cuando su servidor todavía se está ejecutando con error, intente cambiar la escucha a 3001 y vea si todavía hay el error.
libera tu puerto 3000:
Linux: fusor -k 3000/tcp
De acuerdo con esta pregunta en los foros de glitch.com, es posible que tenga dos servicios escuchando el mismo puerto, pero ese no parece ser el caso.
También debería poder cambiar el puerto de escucha predeterminado configurando la variable de entorno PORT en su archivo .env si tiene uno. Probar un puerto diferente debería resolver el problema
EDITAR: Aparentemente, el problema podría ser la configuración inicial del servidor, puede intentar configurar todo de esta manera:
const app = require('express')(); const server = require('http').createServer(app); <-- const io = require('socket.io')(server); io.on('connection', () => { /* your code */ }); server.listen(process.env.PORT, () => {/* your code */});(Obtuve esto de la página socket.io github )
Si esto tampoco funciona, debe intentar preguntar en los foros de soporte de glitch.com , uno de sus técnicos lo ayudará a solucionar mejor su problema, tienen todas las herramientas necesarias.