NodeJS / SocketIO套接字不会发出

时间:2015-06-20 18:54:05

标签: javascript node.js socket.io

我正在尝试向服务器“发送”数据,但没有发生任何事情。 控制台说我已连接,但它不会记录任何东西 我尝试发出特定的命令。

Clientside(JQuery / JS):

    var ip = "";
    $.ajax({
        url : "../host",
        success : function(result){
            ip = result;
        }
    });

    var socket = io.connect(ip);
    socket = io('/admin');

    socket.on('add_task', function(name, event, command, args) {
        AddTask(name, event, command, args); //I get this data from the server
    });

    socket.on('remove_task', function(name) {
        DeleteTask(name); //I get this data from the server.
    });

    $("#addTask").click(function() {
        var args = ["add", $("#nameData").val(), $("#eventData").val(), $("#commandData").val(), $("#argData").val()];
        socket.emit("task", args); //This won't emit anything.
        $("#add-modal").modal("hide");
    });

Serverside(NodeJS):

admin.on('connection', function(socket) {
console.log("An admin has connected."); //This logs

task.get().forEach(function(tsk) {
    var tdata = tsk.split(':');
    admin.emit('add_task', tdata[0], tdata[1], tdata[2], tdata[3]); //This sends
});

admin.on('task', function(args) {
    console.log(args); //This doesn't log
});
});

1 个答案:

答案 0 :(得分:0)

您需要在连接的套接字上侦听事件,如下所示:

admin.on('connection', function(socket) {
  socket.on('task', function(args) {
    console.log(args);
  });
});

这是因为事件来自连接的套接字,否则socket.io将无法知道事件来自哪个套接字,并且事件的相关数据将毫无意义。