无法设置null的属性,在通过websocket接收数据时设置onmessage



获取此错误:

Uncaught (in promise) TypeError: Cannot set properties of null (setting 'onmessage')

针对上下文;我正在构建一个结对编程平台。当用户导航到特定页面时,我会将他们连接到一个websocket。我有一个单独的发送函数,每次编程会话对的驱动程序键入某个内容时都会触发它。该代码通过网络套接字发送给乘客。有一个单独的方法用于侦听和等待来自服务器的侦听。

我得到的错误似乎来自这种方法:

class WebSocketService {
...
constructor() {
this.socketRef = null;
}
...
response(){
this.socketRef= null;
return new Promise((resolve, reject) => {
this.socketRef.onmessage = e => {
var response = JSON.parse(e.data)
console.log(`!!!! response: ${JSON.stringify(response)} !!!`)
resolve(response)
}

})
}
}

此方法在useEffect:内触发

useEffect((() => {
WebSocketInstance.response().then((res) => {
var temp = res ? JSON.parse(res.text) : ''
received.current = temp ? temp.data : ''
})
}))

我最初将用户连接到一个websocket。如果用户是配对编程会话的驱动程序,我会触发一个函数,将驱动程序在代码编辑器中键入的代码发送给乘客,然后乘客接收发送的代码。

您已经在构造函数中设置了:

this.socketRef = null;

因此,您正试图访问现有属性。

如果你想在onmessage中以null值开始,你应该执行

this.socketRef.onmessage = null;

相关内容

  • 没有找到相关文章

最新更新