eclipse-paho / paho.mqtt.javascript

paho.mqtt.javascript
Other
1.16k stars 466 forks source link

Got [Error: AMQJS0011E Invalid state already connected.] when change the Screen in react native app. #250

Open momolly1024 opened 2 years ago

momolly1024 commented 2 years ago

Hi,

env: "react-native": "0.69.6", version: "paho-mqtt": "^1.1.0",

I wrote the code like this :

 function onMessage(message) {
        let data = JSON.parse(message.payloadString)
        console.log(data)
     }
function onConnectionLost(responseObject) {
        if (responseObject.errorCode !== 0) {
            console.log('onConnectionLost:' + responseObject.errorMessage)
        }
    }

useEffect(() => {
        if (something) {
            try {
                client.connect({
                    onSuccess: () => {
                        console.log('Connected!')
                        client.subscribe(`device/default`)
                        client.onConnectionLost = onConnectionLost
                        client.onMessageArrived = onMessage
                    },
                    onFailure: () => {
                        console.log('Failed to connect!')
                    },
                })
            } catch (error) {
                console.log(error)
            }
        }
    }, [something])

It works but when I change the screen(react-navigation) I will got this error: AMQJS0011E Invalid state already connected. and nothing gets.

( Only when I reload the expo can get data again.)

Is there anything I miss?

Thank you!

image

avilgrimaldy commented 11 months ago

That's a sign that it has been connected and you called it again, aka you called connect more than once