Отправка данных через Websockets в Android по кнопке
Начал писать приложение для андроид, которое отправляет данные через Websokets по нажатию кнопки. Я начинающий ламер, поэтому мой код это переделанный код, который я одолжил у людей из интернета. Установить соединение по кнопке у меня получилось, а вот отправить данные не могу, потому что webSocket.send("t") не находится в области видимости... Объявление переменной в начале кода не помогло. Если вы знаете решение, помогите мне, пожалуйста
package com.example.yaga;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.WebSocket;
import okhttp3.WebSocketListener;
import okio.ByteString;
public class MainActivity extends AppCompatActivity {
private Button button_connect;
private Button button_disconnect;
private Button button_switch;
private TextView text;
private static final int NORMAL_CLOSURE_STATUS = 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button_connect = findViewById(R.id.button_connect);
button_switch = findViewById(R.id.button_switch);
text = findViewById(R.id.text_out);
button_connect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
start();
}
});
button_switch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
send_switch();
}
});
}
// WebSocket
private final class EchoWebSocketListener extends WebSocketListener {
@Override
public void onOpen(WebSocket webSocket, Response response) {
// open
output("WebSocket connected to ws://192.168.1.4:81");
}
@Override
public void onMessage(WebSocket webSocket, String text) {
// message
output("Rx: " + text);
}
@Override
public void onClosing(WebSocket webSocket, int code, String reason) {
// close
output("Closed: " + code + " / " + reason);
}
@Override
public void onFailure(WebSocket webSocket, Throwable t, Response response) {
// fail
output("Error: " + t.getMessage());
}
}
private void start() {
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url("ws://192.168.1.4:81").build();
EchoWebSocketListener listener = new EchoWebSocketListener();
final WebSocket webSocket = okHttpClient.newWebSocket(request, listener);
}
private void send_switch() {
// Как отправить webSocket.send("Сообщение");
webSocket.send("t");
}
private void output(final String txt) {
runOnUiThread(new Runnable() {
@Override
public void run() {
text.setText(text.getText().toString() + "\n\n" + txt);
}
});
}
}