웹소켓은 실시간 양방향 통신을 제공하는 프로토콜로, 서버와 클라이언트 사이의 지속적인 연결을 유지하면서 데이터를 전송할 수 있습니다. Java Play Framework에서도 웹소켓을 사용하여 실시간 통신을 구현할 수 있습니다.
Java Play Framework에서 웹소켓을 사용하려면 몇 가지 단계를 따라야 합니다.
-
의존성 추가 먼저, Java Play Framework 프로젝트의
build.sbt
파일에 웹소켓 모듈의 의존성을 추가해야 합니다.libraryDependencies += "com.typesafe.play" %% "play-ws" % "2.8.8"
-
라우트 추가 웹소켓 요청을 처리하기 위해 라우트를 추가해야 합니다.
routes
파일에 웹소켓 핸들러에 대한 라우트를 정의합니다.GET /websocket controllers.MyWebSocketController.socket
-
웹소켓 핸들러 작성 웹소켓 요청에 대응하는 핸들러를 작성해야 합니다.
controllers
패키지 내에MyWebSocketController
를 생성하고, 웹소켓 요청을 처리할 수 있는 핸들러 메서드를 추가합니다.package controllers; import play.mvc.*; import play.libs.concurrent.*; public class MyWebSocketController extends WebSocketController { public WebSocket socket() { return WebSocket.Text.acceptOrResult(request -> { // 웹소켓 연결이 수립될 때 실행되는 코드 if (shouldAcceptWebSocketRequest(request)) { return CompletableFuture.completedFuture(Flow.<String>create()); } else { return CompletableFuture.completedFuture(F.Either.Left(forbidden())); } }); } }
이 예제는 텍스트 기반의 웹소켓 연결을 처리합니다. 만약 바이너리 형태의 데이터를 처리하려면
WebSocket.Binary.acceptOrResult
메서드를 사용할 수도 있습니다. -
웹소켓 핸들러와 연결 웹소켓 핸들러를 클라이언트와 연결하기 위해서는 JavaScript나 다른 클라이언트 라이브러리를 사용해야 합니다. 클라이언트는 웹소켓을 통해 서버와의 연결을 수립하고 데이터를 주고받을 수 있습니다.
const socket = new WebSocket("ws://localhost:9000/websocket"); socket.onopen = function(event) { // 연결이 수립되었을 때 실행되는 코드 console.log("WebSocket connected!"); }; socket.onmessage = function(event) { // 메시지를 수신할 때 실행되는 코드 console.log("Received message:", event.data); }; socket.onclose = function(event) { // 연결이 종료되었을 때 실행되는 코드 console.log("WebSocket disconnected!"); }; // 메시지를 서버로 전송 socket.send("Hello, server!");
위의 단계를 따라서 Java Play Framework에서 웹소켓 통신을 구현할 수 있습니다. 웹소켓을 통해 실시간으로 데이터를 주고받으면서 동적인 웹 애플리케이션을 개발할 수 있습니다.