6

我刚开始使用 node.js,据我所知,客户端与服务器的通信方式是:

//Client Code 1
var iosocket = io.connect();
iosocket.on('connect', function () {
   iosocket.send("Here's some info");
});

当收到“消息”事件时,服务器会意识到这一点:

//Server Code 1
var socketio = require('socket.io');
var io = socketio.listen(server);
io.sockets.on('connection', function (client) {    
    client.on('message', function(msg) {
        //msg== "Here's some info"
    }
});

现在我希望客户端能够提供几个不同的事件,例如:

//Server Code 2
client.on('buttonClicked', function() { ...
client.on('nameChanged', function(newName) { ...

但我很难弄清楚如何。使用我所拥有的部分,我能想出的唯一解决方案是发回消息,但让它们包含信息的键值对:

//Server Code 3
client.on('message', function(msg) {
   kvp = message.split(',');
   if( kvp[0] == 'buttonClicked' )
      ...
   else if( kvp[0] == 'nameChanged' )
      ...
}

但我确信有一种正确的方法可以做到这一点,我还没有在任何示例中看到过。我希望有类似于服务器如何生成它想要使用的任何事件的东西:

//Server Code 4
io.sockets.emit('serverCustomEvent', eventData);

依次由客户端使用:

//Client Code 4
iosocket.on('serverCustomEvent', function(data) {
    //process data
});

有人可以指出我正确的方向吗?

4

1 回答 1

11

您可以emit在客户端上使用将自定义消息发送到服务器。

iosocket.emit('serverCustomEvent', data);

并在服务器上

io.sockets.on('connection', function(socket) {
    socket.on('serverCustomEvent', login);
});
于 2012-12-05T22:07:18.830 回答