/ / POST danych przez socket.io do app.js - node.js, mongodb, express, socket.io

Dane POST przez socket.io do app.js - node.js, mongodb, express, socket.io

Chciałbym:

  • pobierać dane wprowadzone z formularzy wejściowych.
  • wyślij dane przez socket.io i wyślij log konsoli, mówiąc: gotowe
  • odbieraj dane na express app.js
  • wstaw dane do bazy danych mongodb za pomocą mangoose.

Rozumiem wysyłanie wiadomości, ale nie jestem pewien, jak przesyłać dane. z góry dziękuję

moja aplikacja.js jest skonfigurowana w następujący sposób:

//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"});
});

});

mój plik 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);
});

});

Odpowiedzi:

10 dla odpowiedzi № 1

Nie potrzebujesz POST w ogóle.

Zrobiłbym po stronie klienta:

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...
});

A po stronie serwera:

//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});
});
});