我很难尝试将JS对象从客户端套接字发送到服务器。我在React Component上有一个状态为'currentUser'的状态。如果我使用这个,发射将无法按预期工作。
state = {
currentUser: { name: "hello" }
}
socket.emit('request_new_message', { timestamp: Date.now(), user: this.state.currentUser });
在服务器上,我有一个简单的console.log。
socket.on("request_new_message", (msg) => {
console.log(msg)
})
预期输出应为:
{timestamp: 12654676, user: { name: "hello" }}
但是正在打印:
{timestamp: 12654676, user: [Object object] }
这与国家有关吗?如果是这样,我该如何解决问题?
如果没有,如何解决该问题?
谢谢
答案 0 :(得分:0)
当您通过套接字或通过http请求发送数据时,请始终尝试对其进行字符串化
state = {
currentUser: { name: "hello" }
}
socket.emit('request_new_message', JSON.stringify({ timestamp: Date.now(), user: this.state.currentUser }));
然后在服务器端使用
对其进行解析socket.on("request_new_message", (msg) => {
console.log(JSON.parse(msg))
})
希望获得帮助:)
答案 1 :(得分:0)
尝试使用此方法,创建一个临时对象,然后使用Object.assign()
state = {
currentUser: { name: "hello" }
}
let obj = Object.assign({}, {timestamp:Date.now(), user: this.state.currentUser)
socket.emit('request_new_message', obj);