FastAPI를 사용하여 웹소켓(WebSocket) 통신 구현하기

이번 포스트에서는 Python의 FastAPI 프레임워크를 이용하여 웹소켓(WebSocket) 통신을 구현하는 방법을 살펴보겠습니다. 웹소켓은 실시간 양방향 통신을 제공하는 프로토콜로, 서버와 클라이언트 간의 효율적인 통신을 가능하게 해줍니다.

FastAPI 및 웹소켓 패키지 설치하기

먼저, FastAPI와 웹소켓을 사용하기 위해 필요한 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 필요한 패키지를 설치합니다.

pip install fastapi uvicorn websockets

FastAPI 애플리케이션 생성하기

FastAPI 프로젝트를 시작하기 위해 새로운 디렉토리를 생성하고, 그 안에서 다음과 같이 main.py 파일을 만듭니다.

from fastapi import FastAPI, WebSocket

app = FastAPI()

@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    while True:
        data = await websocket.receive_text()
        await websocket.send_text(f"You sent: {data}")

위의 코드에서 @app.websocket("/ws") 데코레이터를 사용하여 /ws 경로에 웹소켓 핸들러를 등록하였습니다. 핸들러는 클라이언트로부터 메시지를 받고, 받은 메시지를 다시 클라이언트로 전송합니다.

애플리케이션 실행하기

웹소켓 통신을 위해 FastAPI 애플리케이션을 실행해보겠습니다. 터미널에 다음과 같은 명령어를 입력합니다.

uvicorn main:app --reload

위의 명령어를 실행하면 FastAPI 애플리케이션이 실행되고, 로컬 개발 서버가 시작됩니다.

웹소켓 클라이언트 테스트하기

웹소켓 통신을 테스트하기 위해 간단한 웹소켓 클라이언트를 만들어봅시다. JavaScript 코드로 작성된 클라이언트 코드이며, 브라우저 개발 도구의 콘솔에서 실행하면 됩니다.

const socket = new WebSocket("ws://localhost:8000/ws");

socket.onopen = function(event) {
  console.log("WebSocket is open now.");
  socket.send("Hello, WebSocket!");
};

socket.onmessage = function(event) {
  console.log(`Message from server: ${event.data}`);
};

위의 코드를 실행하면 클라이언트가 서버와 웹소켓 연결을 시도하고, “Hello, WebSocket!” 메시지를 서버로 전송합니다. 서버는 받은 메시지를 그대로 클라이언트로 다시 보내고, 클라이언트는 이를 출력합니다.

이제 웹소켓 통신을 구현하는 방법을 알게 되었습니다. FastAPI를 사용하면 간단하고 효율적인 웹소켓 애플리케이션을 손쉽게 개발할 수 있습니다.

#Python #FastAPI #웹소켓 #WebSocket