【发布时间】:2011-06-22 07:58:20
【问题描述】:
我有一个使用 socket.io 的 Node.js 项目。在其中,我尝试像这样将一个对象从客户端发送到服务器:
socket.send(JSON.stringify({'type':'msg','message':'test'}));
当它到达服务器时,我在它上面调用JSON.parse,并检查是否object.type == 'msg'。当我运行代码并调用console.log(object.type) 时,它返回"msg",但object.type == 'msg' 返回false。这是怎么回事?
编辑:
失败的代码的相关部分是:
client.on('message', function(message, client){
var envelope = JSON.parse(message);
console.log(envelope.type);
if(envelope.type == "msg") { console.log("yay!"); }
}
只要有消息进来,就会打印msg,但不会打印yay!。
【问题讨论】:
-
你能告诉我们一些你的服务器代码吗?现在我想不出任何失败的原因。
-
你说“...它返回msg,...”,不应该返回一个带有msg的对象吗?
-
尝试注入
console.log(message);作为函数的第一行。另外,检查typeof envelope.type,如果它没有读取字符串,那么这就解释了比较失败的原因。 -
@Martin 他使用的是
==,所以这里的类型无关紧要,我怀疑Node 吞下了第二个log()调用,我过去遇到过这样的问题。 -
@Ivo 问题是第二个console.log调用之后的代码也没有被调用,其他双日志之前都工作过。
标签: javascript json node.js socket.io