2

我似乎在使用 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,以便我可以处理数据。

谢谢!

4

3 回答 3

1

尝试使数组成为对象的属性...无论出于何种原因对我有用;

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

这不起作用:

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

这确实有效:

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

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

于 2014-06-15T00:38:39.690 回答
0

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

于 2013-04-22T05:49:37.300 回答
0

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

console.log('data being sent is:\n' + JSON.stringify(loginInfo));
于 2013-04-22T03:46:44.347 回答