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

Javascript Socket.io不将数据从客户端发送到服务器,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,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' + logi

使用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不是由客户端正确发送,就是服务器没有正确接收。我的目标是让服务器接收登录信息,以便处理数据


谢谢

您需要将对象字符串化以将其附加到字符串中,否则行为将无法预测:

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});

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

我很抱歉说得不够清楚,但是服务器端没有收到JSON。应该是JSON的数据段是这个ack()函数。我想知道为什么数据没有正确发送/接收。情况似乎不是这样,就像我调用
socket.emit('user:login',{username:'username,password:'password')我仍然在服务器上接收相同的
ack()
函数。