Hoy me ocurrió que debía enviar datos en POST a mi socket.io desde PHP con la librería CURL y tuve 2 inconvenientes:
- Me generaba un mensaje Cannot POST /
- req.body undefined
El primer problema es porque no había definido la ruta por lo que «Me generaba un 404» porque no existía coloqué esto:
app.post('/emit', function (req, res) { ... }
Luego ya funcionó pero no me reibía ningún dato de POST:
Node - console.log(req.body) -undefined
Solución instalar el paquete body-parser en Node:
$ npm install body-parser
En los imports de mi aplicación:
const bodyParser = require('body-parser');
En el cuerpo de mi aplicación:
app.use(bodyParser.json()); // body en formato json app.use(bodyParser.urlencoded({ extended: false })); //body formulario
Dentro de la función donde quería rescatar los datos enviados vía POST:
app.post('/emit', function (req, res) { io.sockets.emit("update", req.body); res.json('OK'); //Respondo y cierro conexión });
Ya con esto todo me fue bien y puedo recibir y enviar esos datos con mi Socket.io
Espero les haya servidor de ayuda. @programandoweb