2015-06-20 45 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