套接字.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

我已经使用了套接字。我以前从来没有遇到过这个问题,所以我一定是做了什么奇怪的事情。如果有人知道这个问题的原因,我将非常感激如何解决这个问题的见解。

编辑:这个问题与打印出来的东西无关,我只是用它来说明我的问题,这是loginInfo JSON要么没有被客户端正确发送,要么没有被服务器正确接收。我的目标是让服务器接收到loginInfo,这样我就可以处理数据。

谢谢!

尝试将数组作为对象的属性…不管出于什么原因,这对我来说是有效的;

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

这行不通:

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

这个成功了:

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

奇怪的bug,不知道为什么

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

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

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

相关内容

  • 没有找到相关文章

最新更新