[java] Maven을 사용하여 자바 웹 소켓 통신 구현하기

이번 글에서는 Maven을 사용하여 자바 웹 소켓 통신을 구현하는 방법에 대해 알아보겠습니다. 웹 소켓은 실시간 양방향 통신을 제공하는 프로토콜로, 클라이언트와 서버 간의 실시간 데이터 전송에 매우 유용합니다.

1. 프로젝트 설정

먼저, Maven을 사용하여 프로젝트를 설정해야 합니다. 이를 위해 Maven이 설치되어 있어야 합니다. Maven을 사용하여 자바 웹 소켓 통신을 구현하기 위해 다음과 같이 프로젝트 디렉토리 구조를 생성합니다.

프로젝트명/
   └ src/
      ├ main/
      │   └ java/
      └ pom.xml

pom.xml 파일은 Maven 프로젝트의 설정 파일입니다. 다음과 같이 의존성을 추가하여 웹 소켓 관련 라이브러리를 포함시킬 수 있습니다.

<dependencies>
    <dependency>
        <groupId>javax.websocket</groupId>
        <artifactId>javax.websocket-api</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>org.java-websocket</groupId>
        <artifactId>Java-WebSocket</artifactId>
        <version>1.5.0</version>
    </dependency>
</dependencies>

의존성을 추가한 후에는 Maven을 사용하여 라이브러리를 다운로드하고 프로젝트를 빌드할 수 있습니다.

2. 웹 소켓 서버 구현

이제 웹 소켓 서버를 구현해보겠습니다. 먼저, MyWebSocketServer 클래스를 다음과 같이 생성합니다.

import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;

import java.net.InetSocketAddress;

public class MyWebSocketServer extends WebSocketServer {
    
    public MyWebSocketServer(int port) {
        super(new InetSocketAddress(port));
    }

    @Override
    public void onOpen(WebSocket conn, ClientHandshake handshake) {
        // 클라이언트 연결 시 실행되는 로직
    }

    @Override
    public void onClose(WebSocket conn, int code, String reason, boolean remote) {
        // 클라이언트 연결 종료 시 실행되는 로직
    }

    @Override
    public void onMessage(WebSocket conn, String message) {
        // 클라이언트로부터 메시지를 수신받았을 때 실행되는 로직
    }

    @Override
    public void onError(WebSocket conn, Exception ex) {
        // 에러 발생 시 실행되는 로직
    }

    @Override
    public void onStart() {
        // 서버 시작 시 실행되는 로직
    }
}

MyWebSocketServer 클래스는 WebSocketServer 클래스를 상속받아 웹 소켓 서버를 구현하는 클래스입니다. 각 메서드는 해당 이벤트가 발생했을 때 실행되는 로직을 구현하면 됩니다.

3. 웹 소켓 서버 실행

웹 소켓 서버를 실행하기 위해 다음과 같은 Main 클래스를 생성합니다.

public class Main {
    public static void main(String[] args) {
        MyWebSocketServer server = new MyWebSocketServer(8080);
        server.start();
    }
}

MyWebSocketServer 객체를 생성하고, start() 메서드를 호출하여 서버를 시작합니다. 서버는 지정된 포트(여기서는 8080)로 클라이언트의 연결을 기다리게 됩니다.

결론

위의 간단한 예제를 통해 Maven을 사용하여 자바 웹 소켓 통신을 구현하는 방법을 알아보았습니다. Maven을 사용하면 웹 소켓 관련 라이브러리를 손쉽게 추가할 수 있으며, 편리한 빌드 및 의존성 관리 기능을 제공합니다.

더 자세한 내용은 아래 링크를 참고하세요.