안드로이드 - okHttp3/WebSocket 구축 및 서버 테스트

1. 들어가기 전

   - 스프링 서버와 연동 테스트

   - https://hwihyeon.tistory.com/30

 

16. 스프링 - WebSocket 구축

1. 들어가기 전  - 안드로이드와 연동 테스트를 위한 WebSocket 구축 테스트  - 웹에서의 소켓 통신 부분은 따로 구성되지 않음 2. dependency 추가  - pom.xml 추가 com.fasterxml.jackson.core jackson-datab..

hwihyeon.tistory.com

 

2. dependency 추가

   - bulid.gralde (Module: app)

//버전 확인 : https://square.github.io/okhttp/
implementation("com.squareup.okhttp3:okhttp:4.9.3")

 

3. 코드 작성

   - 다른 통신과 마찬가지로 유지보수 및 가독성을 위해 별도의 파일로 구성

   - listener 선언 시 자동으로 구성

   - java > com.hhk.myapplication > common > HttpWebSocket

package com.hhk.myapplication.common;

import android.util.Log;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import okhttp3.WebSocket;
import okhttp3.WebSocketListener;
import okio.ByteString;

public class HttpWebSocket {

    public static String WEB_SOCKET_URL = "ws://192.168.0.10:8080/homepage/websocket.message";

    public static WebSocketListener listener = new WebSocketListener() {
        @Override
        public void onClosed(@NotNull WebSocket webSocket, int code, @NotNull String reason) {
            super.onClosed(webSocket, code, reason);
        }

        @Override
        public void onClosing(@NotNull WebSocket webSocket, int code, @NotNull String reason) {
            super.onClosing(webSocket, code, reason);
            Log.d("TLOG","소켓 onClosing");
            webSocket.close(1000, null);
            webSocket.cancel();

        }

        @Override
        public void onFailure(@NotNull WebSocket webSocket, @NotNull Throwable t, @Nullable okhttp3.Response response) {
            super.onFailure(webSocket, t, response);
            Log.d("TLOG","소켓 onFailure : " + t.toString());
        }

        @Override
        public void onMessage(@NotNull WebSocket webSocket, @NotNull String text) {
            super.onMessage(webSocket, text);
            Log.d("TLOG", "text 데이터 확인 : " + text.toString());
        }

        @Override
        public void onMessage(@NotNull WebSocket webSocket, @NotNull ByteString bytes) {
            super.onMessage(webSocket, bytes);
            Log.d("TLOG", "ByteString 데이터 확인 : " + bytes.toString());
        }

        @Override
        public void onOpen(@NotNull WebSocket webSocket, @NotNull okhttp3.Response response) {
            super.onOpen(webSocket, response);
            Log.d("TLOG", "전송 데이터 확인 : " + webSocket + " : " + response);
            webSocket.close(1000, null);
        }
    };

}

   - Activity 부분 (메시지 전송 부분)

public void sendWebSocket() {

    try {
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder().url(WEB_SOCKET_URL).build();

        client.newWebSocket(request, HttpWebSocket.listener).send("테스트 메시지!");

        client.dispatcher().executorService().shutdown();

    }catch(Exception e) {
        Log.e("TLOG", "MAIN 소켓 통신 오류 : " + e.toString());

    }

}

 

4. 결과 확인