Senden von Nachrichten client-> server-> client auf socket.io auf node.js

Ich benutze NodeJS + Socket.IO für ein einfaches Web-Spiel. Es klappt. Warum?

Hier ist meinsserver.js

var app = require('express').createServer();
var io = require('socket.io').listen(app);

io.sockets.on('connection', function (socket) {
socket.on('set nickname' , function (nickname) {
socket.nickname = nickname;
console.log(nickname + ' just connected!');

});

socket.on('msg' , function (msg) {
socket.msg = msg;
io.sockets.emit('response', msg);
});

socket.on('updatePlayer' , function (updatePlayer) {
console.log("Someone just moved on the map!");
});

});

app.listen(8080);

Der Grund, warum ich weiß, dass es funktioniert, ist, dass beim Laden der Seite dieses Skript ausgeführt wird:

// SERVER STUFF
socket.on('connect', function () {
    console.log('We are connected!');
    name = $(".name").val();
    this.emit('set nickname', name, function (success) {});
    msg = name + "|" + currX + "|" + currY + "|" + currentMap;
    this.emit('msg', msg, function (success) {});

    socket.on('response', function (data) {
        var theMsg = data.split("|");
        sayDialog("New player! " + theMsg[0] + " connected on map " + theMsg[3] + " on coordinates (" + theMsg[1] + "," + theMsg[2] + ")");
    });
});

Ich bekomme in meinem Dialogfeld ("CSS div") so etwas wieNew player! weka connected on map 4 on coordinates (10,5)

OK, cool, so funktioniert es! Wenn ich mich jedoch "bewege", versuche ich, auf diese Weise eine Nachricht an den Server zu senden

  socket.on('updatePlayer', function () {
    console.log("Testing...");
  }); 

Ich sehe nicht einmalconsole sagen Sie Testen. Ich weiß nicht warum.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage