尝试在Socket.io中将对象从客户端发送到服务器([对象对象])

时间:2019-08-07 11:00:50

标签: reactjs socket.io

我很难尝试将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] }

这与国家有关吗?如果是这样,我该如何解决问题?
如果没有,如何解决该问题?

谢谢

2 个答案:

答案 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);