HOWTO · Java

Java의 WebSocket 클라이언트

이 자습서는 Java에서 WebSocket 클라이언트를 만드는 방법을 보여줍니다.

이 페이지의 내용

이 자습서는 Java에서 WebSocket 클라이언트를 만드는 방법을 보여줍니다.

Java의 WebSocket 클라이언트

WebSocket을 사용하여 클라이언트와 서버 간의 통신 채널을 만들 수 있습니다. WebSocket 프로토콜은 웹 통신에 사용되는 HTTP와 호환됩니다.

WebSocket 프로토콜에는 HTTP에 대한 두 가지 개선 사항이 있습니다. 첫 번째는 HTTP보다 오버헤드가 적고 두 번째는 양방향 웹 통신입니다.

클라이언트와 서버는 클라이언트가 데이터 송수신에 사용되고 서버가 통신에 사용되는 WebSocket 통신의 일부입니다.

WebSocket을 사용하여 클라이언트를 생성해 보겠습니다.

  • 먼저 클래스에 ClientEndpoint로 주석을 달아야 합니다.
  • 그런 다음 ClientManager를 생성하고 클라이언트인 주석이 달린 끝점에 연결하도록 요청해야 합니다. URI는 서버를 지정합니다.
  • 연결이 설정되면 논리는 서버와 유사합니다.
  • 메서드가 열리거나 메시지가 수신되거나 연결이 닫히면 onOpen(), onMessage() 또는 onClose()가 자동으로 호출됩니다.

다음은 위의 사항을 사용하는 클라이언트의 예입니다.

package delftstack;

import java.io.*;
import java.net.URI;
import javax.websocket.*;

@ClientEndpoint
public class Client_Endpoint {
  @OnOpen
  public void onOpen(Session Client_Session) {
    System.out.println("--- Connection Successful " + Client_Session.getId());
    try {
      Client_Session.getBasicRemote().sendText("Start");
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  @OnMessage
  public String onMessage(String Client_Message, Session Client_Session) {
    BufferedReader Buffered_Reader = new BufferedReader(new InputStreamReader(System.in));
    try {
      System.out.println("--- Message Received " + Client_Message);
      String User_Input = Buffered_Reader.readLine();
      return User_Input;
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
  }

  @OnClose
  public void onClose(Session Client_Session, CloseReason Close_Reason) {
    System.out.println("--- Session ID: " + Client_Session.getId());
    System.out.println("--- Closing Reason: " + Close_Reason);
  }

  public static void main(String[] args) {
    ClientManager Client_Manager = ClientManager.createClient();
    try {
      URI uri = new URI("ws://localhost:8080");
      Client_Manager.connectToServer(MyClientEndpoint.class, uri);
      while (true) {
      }
    } catch (DeploymentException | URISyntaxException | InterruptedException e) {
      e.printStackTrace();
    }
  }
}

이 코드는 채팅 기반 시스템용 클라이언트를 구현합니다. 연결이 열리면 클라이언트는 Client_Session.getBasicRemote().sendText()를 사용하여 서버에 메시지를 보냅니다.

서버는 메시지를 수신하고 동일한 문자열로 응답합니다. 이렇게 하면 onMessage() 메서드가 클라이언트에서 실행됩니다.

onMessage() 메서드는 이 시스템의 사용자 입력에서 메시지를 읽습니다.