El servidor web socket se reinicia en un momento determinado y quiero que mi aplicación de front-end de reacción reinicie la conexión cada vez.
esta paz de código funciona bien pero solo una vez. Quiero que se vuelva a conectar cada vez que se pierda la conexión:
_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 }) }}; }
lo estoy usando en un constructor de componentes de clase, esto obtendrá el flujo de datos y lo mostrará en una tabla.
Traté de pasar _connectSocketStreams al evento .onclose : // setTimeout(this._connectSocketStreams(streams), 1000) pero recibí este error:
TypeError: streams.join is not a functionaunque creo que es la forma correcta de hacerlo. ¡Estoy tan confundida!
Esto hizo que funcionara como yo quería:
this[connection].onclose = evt => { this[connection] = null; console.log('closed') setTimeout(this._connectSocketStreams(['!ticker@arr']), 1000)};