Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

386
Vistas
socket.io & express: 404 no encontrado

Mi aplicación.js

 const express = require('express'), morgan = require('morgan'), bodyParser = require('body-parser'), path = require('path'), mongoose = require('mongoose'), app = express(), config = require('./config'), Note = require('./models/note'), server = require('http').createServer(app), io = require('socket.io')(server), socket = io.socket; mongoose.connect('mongodb://'+config.db.host+'/'+config.db.name); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // Serve static assets app.use(express.static(path.resolve(__dirname, '..', 'build'))); app.use(function(req, res, next) { const allowedOrigins = [ 'http://127.0.0.1:8000', 'http://localhost:8000', 'http://127.0.0.1:3000', 'http://localhost:3000']; const origin = req.headers.origin; if(allowedOrigins.indexOf(origin) > -1){ res.setHeader('Access-Control-Allow-Origin', origin); } //res.header("Access-Control-Allow-Origin", "127.0.0.1 localhost"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); res.header('Access-Control-Allow-Credentials', true); next(); });

llamando a socket.emit() en los controladores después de los códigos anteriores.

Mi index.js

 'use strict'; const app = require('./app'), // server = http.createServer(app), PORT = process.env.PORT || 8000; app.listen(PORT, () => { console.log(`REST API running on ${PORT}!`); });

Salida de la consola:

ingrese la descripción de la imagen aquí

¿Alguna idea? Gracias

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Si vas a hacer esto:

 server = require('http').createServer(app),

Entonces, no puedes hacer:

 app.listen(PORT, ...);

porque app.listen() creará un servidor nuevo y diferente y socket.io no estará asociado con ese.

En su lugar, debe hacer:

 server.listen(PORT, ...)

usando el valor del server de app.js. Y, si desea require() en el servidor desde app.js, también debe exportarlo desde app.js (algo más que no veo que haga su código).


Como referencia, el código para app.listen() , hace esto:

 app.listen = function listen() { var server = http.createServer(this); return server.listen.apply(server, arguments); };

Puedes ver cómo crea un servidor diferente al que le pasaste a socket.io. Por lo tanto, el que pasó a socket.io nunca se inicia y, por lo tanto, socket.io no funciona.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda