Socket.io不从客户端发送数据到服务器

我似乎有一个使用socket.io从客户端到服务器的通信问题。

首先,我发送的JSON对象

loginInfo = { email: 'username', password: 'password' } 

在客户端我有:

 socket.emit('user:login', loginInfo); 

然后在服务器端,我有

 socket.on('user:login', function(loginInfo) { console.log('data being sent is:\n' + loginInfo); }); 

这将在控制台中打印出来:

 data being sent is: function ack() { self.log.debug('sending data ack packet'); socket.packet({ type: 'ack' , args: util.toArray(arguments) , ackId: packet.id }); } 

同样如果我这样做

 socket.on('user:login', function(loginInfo) { console.log('data being sent is:\n' + loginInfo.password); }); 

控制台打印出来:

 data being sent is: undefined 

我以前用过socket.io,以前从来没有遇到这个问题,所以我一定要做点奇怪的事情。 如果有人知道这个问题的原因,我将非常感谢有关如何解决这个问题的见解。

编辑:这个问题不需要做什么打印出来,我只是用它来说明我的问题,这就是loginInfo JSON要么不是由客户端正确发送或没有被服务器正确接收。 我的目标是让服务器接收loginInfo,这样我就可以处理这些数据。

谢谢!

您需要对对象进行串联以将其追加到string,否则行为将变得不可预知:

 console.log('data being sent is:\n' + JSON.stringify(loginInfo)); 

是否有可能在客户端有一个名为loginInfo的函数? 我相信socket.emit('user:login', loginInfo); 行是发送一个函数,而不是一个参数。 在socket.emit作为参数的函数用于获取确认。

尝试使数组成为一个对象的属性…无论出于何种原因,对我而言都是如此;

 messageIds = [1,2,3,4,5,6]; 

这不起作用:

 socket.emit('updateMessage',JSON.stringify(messageIds)); 

这确实工作:

  socket.emit('updateMessage',{1:messageIds}); 

奇怪的错误,不知道为什么。