Javascript 使用套接字io发送和获取两条指令的数据
我试图找到一种方法,从我的客户机向JSON对象中的服务器发出指令。 这是我的问题,我的服务器收到了我的第一条指令。但我的第二条指令“deleteFile”位于json对象内部,服务器从未收到第二条指令。 我想知道这是否可行,我是否用了错误的方式。 我想这样做: 客户端:我发出带有var“message”的“指令” 和服务器app.js上的“指令”: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
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!');