В каком компоненте приложения Android устанавливать соединение WebSocket

Всем привет. Прошу помощи, делал Websocket клиент по этой статье: https://www.pubnub.com/blog/java-websocket-programming-with-android-and-spring-boot/ ниже код MainActivity.java вопрос такой, почему соединение создаются хаотично и беспорядочно много раз, с момента как приложение запускается?

  1. как сделать, что бы соединение устанавливалось 1 раз при открытии приложения?
  2. как сделать, что бы устанавливалось после клика по кнопке?

package com.example.myapplication;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;

import com.example.myapplication.databinding.ActivityMainBinding;
import com.google.android.material.bottomnavigation.BottomNavigationView;


import java.net.URI;
import java.net.URISyntaxException;
import android.os.Bundle;

import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.net.URI;
import java.net.URISyntaxException;
import tech.gusavila92.websocketclient.WebSocketClient;


public class MainActivity extends AppCompatActivity {
    private ActivityMainBinding binding;
    private Button button;
    private TextView status;
    private WebSocketClient webSocketClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        button = findViewById(R.id.button2);
        status = findViewById(R.id.menu_name);
        BottomNavigationView navView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
                R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
        NavigationUI.setupWithNavController(binding.navView, navController);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                createWebSocketClient();
            }
        });

    }
    private void createWebSocketClient() {
        URI uri = null;
        try {
            uri=new URI("ws://217.278.177.181:1456/");
        }
        catch (URISyntaxException e){
            e.printStackTrace();
        }
        webSocketClient = new WebSocketClient(uri) {
            @Override
            public void onOpen() {
                Log.i("Websocket","Session is starting");
                webSocketClient.send("Hello server!");
                //status.setText("successfully connect");
            }

            @Override
            public void onTextReceived(String message) {
                Log.i("Websocket","Message received");
            }
            @Override
            public void onBinaryReceived(byte[] data) {

            }

            @Override
            public void onPingReceived(byte[] data) {

            }

            @Override
            public void onPongReceived(byte[] data) {

            }

            @Override
            public void onException(Exception e) {

            }

            @Override
            public void onCloseReceived() {
                Log.i("Websocket","Closed");
                System.out.println("onCloseReceived");
            }
        };
        webSocketClient.setConnectTimeout(10000);
        webSocketClient.setReadTimeout(60000);
        webSocketClient.enableAutomaticReconnection(5000);
        webSocketClient.addHeader("Origin", "http://developer.example.com");
        webSocketClient.connect();
    }



}


Ответы (0 шт):