【问题标题】:How to create custom client events in node.js + socket.io如何在 node.js + socket.io 中创建自定义客户端事件
【发布时间】:2012-11-23 20:48:53
【问题描述】:

我刚刚开始使用 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
});

有人能指出正确的方向吗?

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

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

    iosocket.emit('serverCustomEvent', data);
    

    在服务器上

    io.sockets.on('connection', function(socket) {
        socket.on('serverCustomEvent', login);
    });
    

    【讨论】:

    • 谢谢,我可以发誓这是我尝试的第一件事,但我一定搞砸了。我很难找到一个全面的 api。这就是我的 javascript 问题,弱类型化让你很难知道你正在使用什么对象并用谷歌搜索它们。
    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2011-12-03
    • 2016-01-24
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多