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 № 1Nie 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});
});
});