Java의 WebSocket 클라이언트

Sheeraz Gul 2023년10월12일
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() 메서드는 이 시스템의 사용자 입력에서 메시지를 읽습니다.

작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook