Skip to content

Android PubSub with WebSockets Sample does not work!!!  #750

Closed
@iwwork

Description

@iwwork

Thanks @muellerfr @minbi @desokroshan to solve this one:
AndroidPubSub Sample does not work!!!
#719

Now I tried to follow the above method to use it in the following:
AndroidPubSubWebSocket
https://github.com/awslabs/aws-sdk-android-samples/tree/master/AndroidPubSubWebSocket
there still has some problems:

State your question
The apk keeps reconnceting

Which AWS Services are you utilizing?
AWS IoT

Provide code snippets (if applicable)

Followed the instruction https://github.com/awslabs/aws-sdk-android-samples/tree/master/AndroidPubSubWebSocket to set the parameter on the AWS cloud

Downloaded the whole code from https://github.com/awslabs/aws-sdk-android-samples

Used Android Studio 3.3.1 to open the folder AndroidPubSubWebSocket
I change in the awsconfiguration.json
"PoolId": "REPLACE_ME",
"Region": "us-east-1"

PubSubActivity.java
// Customer specific IoT endpoint
// AWS Iot CLI describe-endpoint call returns: XXXXXXXXXX.iot..amazonaws.com,
private static final String CUSTOMER_SPECIFIC_IOT_ENDPOINT = "REPLACE_ME";

add implementation "com.amazonaws:aws-android-sdk-auth-userpools:$aws_version in AndroidPubSub/build.gradle

Sync, Build and Run App on emulator9.0 or Mobile Phone8.0, the result in Logcat is

com.amazonaws.demo.androidpubsubwebsocket D/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: clientId = ***
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: MQTT broker: ***:443
com.amazonaws.demo.androidpubsubwebsocket D/AWSMobileClient: Inspecting user state details
com.amazonaws.demo.androidpubsubwebsocket D/AWSMobileClient: waitForSignIn: userState:GUEST
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: ready to do mqtt connect
com.amazonaws.demo.androidpubsubwebsocket I/AWSIotMqttManager: metrics collection is enabled, username: ?SDK=Android&Version=2.12.1
com.amazonaws.demo.androidpubsubwebsocket I/AWSIotMqttManager: resetting reconnect attempt and retry time
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: Setting up Callback for MqttClient
com.amazonaws.demo.androidpubsubwebsocket D/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: Status = Connecting
com.amazonaws.demo.androidpubsubwebsocket D/NetworkSecurityConfig: No Network Security Config specified, using platform default
com.amazonaws.demo.androidpubsubwebsocket W/AWSIotMqttManager: onFailure: connection failed.
    MqttException (0) - java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
        at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:664)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.receiveHandshakeResponse(WebSocketHandshake.java:133)
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.execute(WebSocketHandshake.java:74)
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketSecureNetworkModule.start(WebSocketSecureNetworkModule.java:77)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650)
        at java.lang.Thread.run(Thread.java:764) 
com.amazonaws.demo.androidpubsubwebsocket D/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: Status = Reconnecting
com.amazonaws.demo.androidpubsubwebsocket I/AWSIotMqttManager: schedule Reconnect attempt 0 of 10 in 4 seconds.
com.amazonaws.demo.androidpubsubwebsocket E/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: Connection error.
    MqttException (0) - java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
        at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:664)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.receiveHandshakeResponse(WebSocketHandshake.java:133)
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.execute(WebSocketHandshake.java:74)
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketSecureNetworkModule.start(WebSocketSecureNetworkModule.java:77)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650)
        at java.lang.Thread.run(Thread.java:764) 
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: TID: 5505 trying to reconnect to session
com.amazonaws.demo.androidpubsubwebsocket I/AWSIotMqttManager: attempting to reconnect to mqtt broker
com.amazonaws.demo.androidpubsubwebsocket D/AWSMobileClient: Inspecting user state details
com.amazonaws.demo.androidpubsubwebsocket D/AWSMobileClient: waitForSignIn: userState:GUEST
/com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: Reconnect to mqtt broker: *** mqttWebSocketURL: wss://***:443/mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=***
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: Setting up Callback for MqttClient
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: mqtt reconnecting attempt 1
com.amazonaws.demo.androidpubsubwebsocket W/AWSIotMqttManager: Reconnect failed 
    MqttException (0) - java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
        at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:664)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.receiveHandshakeResponse(WebSocketHandshake.java:133)
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.execute(WebSocketHandshake.java:74)
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketSecureNetworkModule.start(WebSocketSecureNetworkModule.java:77)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650)
        at java.lang.Thread.run(Thread.java:764) 
com.amazonaws.demo.androidpubsubwebsocket I/AWSIotMqttManager: schedule Reconnect attempt 1 of 10 in 8 seconds.
com.amazonaws.demo.androidpubsubwebsocket D/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: Status = Reconnecting
com.amazonaws.demo.androidpubsubwebsocket E/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: Connection error.
    MqttException (0) - java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
        at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:664)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.receiveHandshakeResponse(WebSocketHandshake.java:133)
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.execute(WebSocketHandshake.java:74)
        at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketSecureNetworkModule.start(WebSocketSecureNetworkModule.java:77)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650)
        at java.lang.Thread.run(Thread.java:764) 

The Apk keeps reconnectiong.

How to deal with this problem?
Should there some other code be added?

Environment(please complete the following information):

  • SDK Version: [e.g. 2.6.25]

Device Information (please complete the following information):

  • Device: [e.g. Pixel XL, Simulator]
  • Android Version: [e.g. Nougat 7.1.2]
  • Specific to simulators:

If you need help with understanding how to implement something in particular then we suggest that you first look into our developer guide. You can also simplify your process of creating an application, as well as the associated backend setup by using the Amplify CLI.

Metadata

Metadata

Assignees

Labels

closing soonIssue will auto-close if there is no additional activity within 7 days.iotIssues with the AWS Android SDK for Internet of Things (IoT)pending-maintainer-responseIssue is pending response from an Amplify team memberquestionGeneral question

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions