WebSocket은 클라이언트와 서버 간의 긴 연결을 설정하는 데 사용되는 HTML5에서 도입된 새로운 프로토콜입니다. HTTP와 마찬가지로 표준 웹 포트에서 실행될 수 있고 방화벽 및 프록시 서버도 통과할 수 있으며 실시간 통신 및 푸시 알림과 같은 시나리오에서 널리 사용되었습니다.
Java는 강력한 프로그래밍 언어로서 다양한 WebSocket 관련 API 및 라이브러리도 제공합니다. 이 기사에서는 Java를 사용하여 Websocket 애플리케이션을 개발하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.
1. WebSocket API 소개
Java EE 7은 WebSocket 클라이언트 측 및 서버 측 인터페이스를 포함하는 WebSocket용 JSR-356 Java API를 제공합니다. Java EE 7 컨테이너(예: GlassFish, Tomcat 등) 또는 타사 라이브러리(예: Jetty, Tyrus 등)를 사용하여 WebSocket 기능을 구현할 수 있습니다.
Java WebSocket API의 핵심 인터페이스와 클래스는 다음과 같습니다.
WebSocket 애플리케이션은 Java WebSocket API를 사용하여 쉽게 구현할 수 있으며, 구체적인 예시는 다음에 소개하겠습니다.
2. WebSocket 애플리케이션 예제
이 기사에서는 다음 측면에서 WebSocket 애플리케이션 구현을 소개합니다.
2.1 서버 측 WebSocket 엔드포인트 구현
서버 측에서 WebSocket 애플리케이션을 구현하려면 WebSocket 엔드포인트를 생성해야 합니다. 간단한 엔드포인트 코드는 다음과 같습니다.
import javax.websocket.OnMessage; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; import java.io.IOException; @ServerEndpoint(value = "/chat") public class ChatEndpoint { @OnMessage public void onMessage(Session session, String message) throws IOException { // 处理收到的消息 session.getBasicRemote().sendText("You said: " + message); } }
@ServerEndpoint 주석을 통해 엔드포인트의 URI 경로를 지정합니다. 여기서는 "/chat"입니다. 엔드포인트에서는 클라이언트가 보낸 메시지를 수신하고 처리하기 위해 @OnMessage 주석이 구현됩니다. 이 방법에서는 수신된 메시지를 처리하고 클라이언트에 응답 메시지를 보낼 수 있습니다.
2.2 클라이언트 측 WebSocket 구현
클라이언트는 javax.websocket 클라이언트 API를 사용하여 Java를 통해 WebSocket을 구현할 수 있습니다. 다음은 간단한 Java WebSocket 클라이언트 예입니다.
import javax.websocket.ClientEndpoint; import javax.websocket.OnMessage; import javax.websocket.Session; import java.net.URI; import java.net.URISyntaxException; import java.util.concurrent.CountDownLatch; @ClientEndpoint public class ChatClientEndpoint { private CountDownLatch latch; public ChatClientEndpoint(CountDownLatch latch) { this.latch = latch; } @OnMessage public void onMessage(Session session, String message) { System.out.println("Received message: " + message); latch.countDown(); } public static void main(String[] args) throws Exception { final int messageCount = 5; final CountDownLatch latch = new CountDownLatch(messageCount); URI uri = new URI("ws://localhost:8080/chat"); ChatClientEndpoint client = new ChatClientEndpoint(latch); WebSocketContainer container = ContainerProvider.getWebSocketContainer(); container.connectToServer(client, uri); for (int i = 0; i < messageCount; i++) { String message = "Hello " + i; client.sendMessage(message); System.out.println("Sent message: " + message); } latch.await(); container.close(); } public void sendMessage(String message) { try { session.getBasicRemote().sendText(message); } catch (IOException e) { e.printStackTrace(); } } }
클라이언트 코드에서는 @ClientEndpoint 주석을 사용합니다. 클라이언트의 WebSocket 끝점. 기본 메서드에서는 WebSocketContainer를 사용하여 서버 측에 연결하고 5개의 메시지를 보냅니다. 서버 측 응답을 받은 후 처리를 위해 onMessage 메소드가 호출되고, CountDownLatch는 프로그램의 동기 대기를 구현하는 데 사용됩니다.
2.3 서버 측 브로드캐스트 메시지 구현
WebSocket 애플리케이션에서는 서버가 모든 클라이언트에게 메시지를 브로드캐스트해야 하는 경우가 있습니다. 다음은 간단한 예입니다.
import javax.websocket.OnMessage; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; import java.util.Collections; import java.util.HashSet; import java.util.Set; @ServerEndpoint(value = "/chat") public class ChatEndpoint { private static Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>()); @OnMessage public void onMessage(Session session, String message) throws IOException { // 处理收到的消息 broadcast("User " + session.getId() + " said: " + message); } private void broadcast(String message) throws IOException { for (Session session : sessions) { if (session.isOpen()) { session.getBasicRemote().sendText(message); } } } @OnOpen public void onOpen(Session session) { sessions.add(session); } @OnClose public void onClose(Session session) { sessions.remove(session); } }
이 코드에서는 모든 WebSocket 세션 목록을 유지하고 @OnOpen 메서드에서 새 세션을 추가하고 @OnClose 메서드에서 세션을 제거합니다. 동시에 브로드캐스트 메시지는 브로드캐스트 방식으로 모든 WebSocket 세션에 전송됩니다.
3. 요약
WebSocket은 프로그램이 실시간 통신 및 실시간 푸시 기능을 설정할 수 있게 해주는 매우 강력한 새로운 프로토콜입니다. Java는 WebSocket에 대한 풍부한 API 및 라이브러리 지원도 제공합니다. 이 문서에서는 Java를 사용하여 WebSocket 애플리케이션을 개발하는 방법을 설명하고 특정 코드 예제를 제공합니다. 이 기사가 Java로 WebSocket 애플리케이션을 개발하는 데 도움이 되기를 바랍니다.
위 내용은 Java를 사용하여 Websocket 애플리케이션을 개발하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!