2015-06-20 77 views
0

我试图'发射'数据到服务器,但没有发生。 控制台说我已连接,但不会记录任何东西,只要 我尝试发出特定命令。NodeJS/SocketIO套接字不会发出

客户方(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 
}); 
}); 

回答

0

你要听的连接插座上的情况下,像这样:

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

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

+0

我是,我离开了。现在编辑 – StackOverload

+0

当你应该引用'socket'时,它仍然看起来像引用'admin'。 – razorbeard

+0

Welp。谢谢!! ! – StackOverload