var sockets = [];
function findSocketByUID(uid){
var index = findIndexByUID(uid);
if(index == -1) return null;
return sockets[index];
}
socket.on('chat message', function(msg){
if(msg.to == 'all'){
io.emit('chat message', msg);
}else{
var socket_to = findSocketByUID(msg.to);
if(socket_to){
socket_to.emit("chat message", msg);
}else{
socket.broadcast.emit("chat message", msg);
}
}
});
嗨,这是我的Node.JS应用程序的一部分, 使用参数msg.to调用findSocketByUID,这是一个字符串值。 但为什么函数findSocketByUID中的参数uid未定义?如何正确调用findSocketByUID传递参数?
编辑: 我在这一行添加一个断点:
var socket_to = findSocketByUID(msg.to);
我的msg看起来像这样:
" { "至" :" a27efd3f-ee63-413a-20ae-527419fab246", "内容" :" giuh", "时间" :" 2016-06-06T11:27:11Z", "从" :" 683C2782-A575-4154-9F78-CAD6B74AB19D" }"
答案 0 :(得分:0)
编辑中显示的msg
似乎是一个JSON字符串,而不是一个实际对象(它在大括号外面有引号)。字符串不会有.to
属性。
您需要使用JSON.parse()
将其转换为实际对象,以便您可以访问其属性。