[英]Reconnect WebSocket in react js
web 套接字服务器在某个时间重新启动,我希望我的反应前端应用程序每次都重新启动连接。
这种和平的代码工作正常,但只有一次。 我希望每次连接丢失时重新连接:
_connectSocketStreams(streams) {
streams = streams.join('/');
let connection = btoa(streams);
const { BASE_WSS_PATH } = wssPath;
this[connection] = new WebSocket(`${BASE_WSS_PATH}/!ticker`);
this[connection].onmessage = evt => {
let ticker = this._getTickerBySymbol(JSON.parse(evt.data))
this.props.dispatch({
type: 'UPDATE_MARKET_PAIRS',
data: ticker
})
!this.props.active_market.market && this._UsdtActive('USDT')
this.setState({
isLoaded: true
})
}
this[connection].onerror = evt => {
console.error(evt);
}
this[connection].onclose = evt => {
this[connection] = null;
console.log('closed')
this[connection] = new WebSocket(`${BASE_WSS_PATH}/!ticker`);
this[connection].onmessage = evt => {
let ticker = this._getTickerBySymbol(JSON.parse(evt.data))
this.props.dispatch({
type: 'UPDATE_MARKET_PAIRS',
data: ticker
})
!this.props.active_market.market && this._handleTabClick('USDT')
this.setState({
isLoaded: true
})
}
}; }
我在 class 组件构造函数中使用它,这将获取数据 stream 并将其显示在表格中。
我试图将_connectSocketStreams
传递给.onclose
事件: // setTimeout(this._connectSocketStreams(streams), 1000)
但出现此错误:
TypeError: streams.join is not a function
即使我认为这是正确的做法。 我很混乱!
这使它按我的意愿工作:
this[connection].onclose = evt => {
this[connection] = null;
console.log('closed')
setTimeout(this._connectSocketStreams(['!ticker@arr']), 1000)};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.