【问题标题】:WebSocket not reconnect if disconnect/connect Web socket receptively如果接受断开/连接 Web 套接字,WebSocket 不会重新连接
【发布时间】:2020-09-24 08:14:36
【问题描述】:

在我的应用程序中,当用户登录时,我使用会话 ID 创建 webSocket 连接。注销后套接字将关闭。这工作正常。但是,如果我注销并在终止应用程序之前再次使用相同帐户或不同帐户登录 webSocket 抛出错误received bad response code from server 503 现在如果我在用户登录时终止应用程序,当我启动应用程序时 WebSocket 将完美连接,如果之后如果杀死应用程序,则注销并使用初始渲染打开应用程序,并且用户登录套接字将连接而不会出现任何错误。 MY Socket 代码如下。在这方面的任何帮助将不胜感激。

import React, {Component} from 'react';
import {connect} from 'react-redux';
class SocketController extends React.PureComponent {

    state = {
        socket: null
    }

    closeSocket() {
        this
            .state
            .socket
            .close();
        this.setState({socket: null})
    }
    componentDidUpdate() {
        if (this.props.user && this.props.user.sessionId) {
            this.connectSocket();
        } else {
            this.closeSocket()
        }
    }

    connectSocket() {
        let url = 'ws://localhost/socket';
        this.setState({
            socket: new WebSocket(url, '', {
                headers: {
                    Cookie: this.props.user.sessionId
                }
            })
        }, () => {

            this.state.socket.onerror = (e) => {
                console.log(e.message);
            }

            this.state.socket.onclose = () => {}
            this.state.socket.onopen = (e) => {}
            this.state.socket.onmessage = (event) => {}

        });

    }
    render() {
        return null
    }

}

const mapStateToProps = ({user}) => ({user});

export default connect(mapStateToProps)(SocketController);

【问题讨论】:

    标签: javascript react-native websocket react-redux


    【解决方案1】:

    wireshark 的帮助下调试了几个小时后,我发现在我的用例中,有一对 cookie 在注销时发送到服务器,但并没有清除 cookie。所以先清除cookie然后重新连接服务器。

    在使用cookies重新连接服务器之前清除所有cookies

    import CookieManager from '@react-native-community/cookies';
    
    // clear cookies
       CookieManager.clearAll()
          .then((success) => {
            console.log('CookieManager.clearAll =>', success);
        })
    

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      相关资源
      最近更新 更多