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});
奇怪的错误,不知道为什么。