/ / Datos POST a través de socket.io a app.js - node.js, mongodb, express, socket.io

Datos POST a través de socket.io a app.js - node.js, mongodb, express, socket.io

Me gustaría:

  • recuperar los datos introducidos desde los formularios de entrada.
  • envíe los datos a través de socket.io y envíe el registro de la consola que dice "hecho"
  • recibir los datos en express app.js
  • inserte los datos en una base de datos mongodb usando mangosta.

Entiendo que emito mensajes pero no estoy seguro de cómo publicar los datos. gracias de antemano

mi app.js está configurado de esta manera:

//app.js config ...

var socket = io.listen(server);

socket.on("connection", function(socket) {
console.log("socket.io connected");
});



app.post("/go", function(req, res) {

socket.on("data", function(data) {
new Order({
routeFrom : data.routeFrom,
routeTo : data.routeTo,
leaving: data.leaving
}).save(function(err, docs) {
if(err) { console.log("error"); }
res.json(data);
});
socket.emit("callback", {done: "Done"});
});

});

mi archivo index.ejs:

  <script src="/socket.io/socket.io.js"></script>

 var socket = io.connect("http://localhost:3000");

$("#send").on("click", function() {
$.post("/go", {
socket.emit("data", {
routeFrom: $("#rf").val(),
routeTo: $("#rt").val(),
leaving: $("#l").val()
});

});

socket.on("callback", function(data) {
console.log(data);
});

});

Respuestas

10 por respuesta № 1

No necesitas POST en absoluto.

Lo haría en el lado del cliente:

var socket = io.connect("http://localhost:3000");

$("#send").on("click", function(event) {
event.preventDefault();
socket.emit("data", {
routeFrom: $("#rf").val(),
routeTo: $("#rt").val(),
leaving: $("#l").val()
});
});

socket.on("callback", function(data) {
console.log(data.done);
// Print the data.data somewhere...
});

Y en el lado del servidor:

//app.js config ...
var socket = io.listen(server);

socket.on("connection", function(socket) {
console.log("socket.io connected");
});

socket.on("data", function(data) {
new Order({
routeFrom : data.routeFrom,
routeTo : data.routeTo,
leaving: data.leaving
}).save(function(err, docs) {
if(err) { return console.log("error"); }
socket.emit("callback", {done: "Done", data: data});
});
});