Javascript 使用套接字io发送和获取两条指令的数据

Javascript 使用套接字io发送和获取两条指令的数据,javascript,angularjs,json,node.js,socket.io,Javascript,Angularjs,Json,Node.js,Socket.io,我试图找到一种方法,从我的客户机向JSON对象中的服务器发出指令。 这是我的问题,我的服务器收到了我的第一条指令。但我的第二条指令“deleteFile”位于json对象内部,服务器从未收到第二条指令。 我想知道这是否可行,我是否用了错误的方式。 我想这样做: 客户端:我发出带有var“message”的“指令” 和服务器app.js上的“指令”: socket.on('instruction', function(jsonMessage){ var dest_list = jsonMessag

我试图找到一种方法,从我的客户机向JSON对象中的服务器发出指令。 这是我的问题,我的服务器收到了我的第一条指令。但我的第二条指令“deleteFile”位于json对象内部,服务器从未收到第二条指令。 我想知道这是否可行,我是否用了错误的方式。 我想这样做:

客户端:我发出带有var“message”的“指令”

和服务器app.js上的“指令”:

socket.on('instruction', function(jsonMessage){
var dest_list = jsonMessage.dest_list;
var message = jsonMessage.message;
var filename = jsonMessage.filename;

var user_id = dest_list;
var instruction = {
  message : message,
  user_id : user_id,
  filename : filename,
};

if (dest_list.length){
  for (var i = 0; i < dest_list.length; i++) {
    var user_id = dest_list[i].toLowerCase();
    if (user_id in socket_clients){
      var socketId = socket_clients[user_id].socketId;
    socket.broadcast.to(socketId).emit('instruction', instruction);
    console.log(instruction); //print "{message:'deleteFile', user_id: ['emitter'], filename: 'thegoodfile'}
    }
    else{
      console.log("Error", user_id);
    }
  }
} else{
    console.log("Error");
} });
我认为我的服务器不理解我的指令“deleteFile”,但我没有找到方法告诉他这是一条指令。 如果我遗漏了一些信息,请告诉我。
如果您能提供帮助,谢谢您。

通过本文找到了解决方案:

我不能用“广播”从我的服务器发送给他自己。从socket.io文档:

 // sending to all clients except sender
socket.broadcast.emit('broadcast', 'hello friends!');
是这样写的


因此,我在节点(doc:)中使用了事件处理程序,它可以工作。

您显示的代码从不
.emit('deleteFile',…)
,而您正在收听这个
'deleteFile'
命令来打印
“测试消息”
。如果
socket.broadcast.to(socketId)
是一个有效的套接字,我想你应该用
.emit(instruction.message,instruction)
替换
emit
部分(以便调用
'deleteFile'
的侦听器)。你是对的,我想我的问题出在我的“socket.broadcast.to”上。它不能与“.emit”('deleteFile',instruction')一起使用。因此,我将搜索此套接字的问题所在。谢谢@StockOverwaw
 socket.on('deleteFile', function(jsonMessage) {
console.log("Test message"); };
 // sending to all clients except sender
socket.broadcast.emit('broadcast', 'hello friends!');