【发布时间】:2020-01-28 14:40:41
【问题描述】:
我正在尝试使用 React 创建一个 WebSocket 客户端。我已经修改了https://github.com/bitlabstudio/blogpost-react-websocket-chat/blob/master/frontend/src/Chat.js 的代码来创建一个 WebSocket 侦听器组件,如下所示:
class WsListen extends React.Component {
constructor(props) {
super(props)
this.state = {
lastMessage: '',
ws: null
}
}
componentDidMount() {
let ws = new WebSocket(URL)
this.setState({ws: ws})
ws.onopen = () => {
console.log('connected')
}
ws.onmessage = evt => {
console.log(evt.data)
this.setState({lastMessage: evt.data})
}
ws.onclose = () => {
console.log('disconnected')
// automatically try to reconnect on connection loss
this.setState({ws: new WebSocket(URL)})
}
}
render() {
return (
<div>
<p>Last message: {this.state.lastMessage}</p>
</div>
);
};
}
这适用于创建连接和收听消息。但是,当服务器发送断开连接时重新连接的逻辑不起作用。在服务器上,我可以看到客户端已经重新连接并被服务器注册。但是断线重连后,客户端就不再检测或响应消息了。
【问题讨论】: