[kotlin] 코틀린 웹 소켓 서버 개발 방법
웹 소켓은 실시간 양방향 통신을 위한 프로토콜로, 코틀린을 사용하여 웹 소켓 서버를 개발하는 방법에 대해 알아보겠습니다.
1. 의존성 추가하기
먼저, 코틀린에서 웹 소켓 서버를 개발하기 위해 필요한 의존성을 추가해야 합니다.
build.gradle
파일에 다음 의존성을 추가합니다.
dependencies {
implementation "io.ktor:ktor-websockets:$ktor_version"
}
ktor_version
의 값을 사용하고자 하는 Ktor 버전으로 변경해야 합니다.
2. 웹 소켓 서버 구현하기
import io.ktor.application.*
import io.ktor.features.ContentNegotiation
import io.ktor.http.cio.websocket.*
import io.ktor.jackson.jackson
import io.ktor.request.receive
import io.ktor.routing.Routing
import io.ktor.routing.route
import io.ktor.routing.websocket
import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty
fun main() {
embeddedServer(Netty, port = 8080, module = Application::module).start(wait = true)
}
fun Application.module() {
install(ContentNegotiation) {
jackson {
// configure Jackson if needed
}
}
install(Routing) {
route("/ws") {
websocket("/chat") {
// 웹 소켓 연결이 이루어졌을 때 실행되는 코드
val session = call.webSocketSession
// 클라이언트로부터 메시지를 수신하는 코드
for (frame in incoming) {
if (frame is Frame.Text) {
val receivedText = frame.readText()
// 수신된 메시지를 처리하는 코드
handleMessage(receivedText)
}
}
}
}
}
}
suspend fun DefaultWebSocketSession.handleMessage(message: String) {
// 메시지 처리 로직을 구현합니다.
// 예: 메시지를 로그에 출력하거나 클라이언트로부터 메시지를 받아 다른 클라이언트에게 전송하는 등의 동작을 수행합니다.
}
위의 코드는 Ktor를 사용하여 코틀린에서 웹 소켓 서버를 개발하는 예제입니다.
- 서버 실행 및 테스트하기
위 코드에서 main()
함수를 실행하면 웹 소켓 서버가 로컬에서 8080 포트에서 실행됩니다.
테스트를 위해 브라우저에서 다음과 같은 JavaScript 코드를 사용하여 웹 소켓 클라이언트를 작성할 수 있습니다.
const socket = new WebSocket('ws://localhost:8080/ws/chat');
socket.onopen = () => {
console.log('WebSocket connection established.');
socket.send('Hello server!');
};
socket.onmessage = (event) => {
console.log('Received message from server:', event.data);
};
socket.onclose = () => {
console.log('WebSocket connection closed.');
};
이제 웹 소켓 클라이언트가 서버와 연결되고, 서버로부터 메시지를 수신받을 수 있게 되었습니다.
코틀린을 사용하여 웹 소켓 서버를 개발하는 방법에 대해 알아보았습니다. 이를 활용하여 다양한 실시간 애플리케이션을 개발할 수 있습니다.