[python] FastAPI에서 WebSocket 지원하기

FastAPI는 Python으로 개발된 웹 프레임워크로써, 고성능과 간결한 구문을 제공하여 웹 애플리케이션을 쉽게 개발할 수 있습니다. FastAPI는 HTTP 요청 및 응답에 대한 동기 및 비동기 지원을 제공하지만, WebSocket도 지원하고 있어 실시간 통신을 구현할 수 있습니다.

이번 블로그 포스트에서는 FastAPI에서 WebSocket을 사용하는 방법에 대해 알아보겠습니다.

FastAPI에서 WebSocket 사용하기

FastAPI에서 WebSocket을 사용하기 위해서는 다음과 같은 단계를 따라야 합니다.

  1. FastAPI를 설치합니다.
    pip install fastapi
    
  2. 웹 애플리케이션을 작성합니다. 아래는 FastAPI와 함께 WebSocket을 사용하는 간단한 예제입니다.

    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}")
    

    위 예제에서는 /ws 엔드포인트를 WebSocket 엔드포인트로 정의하고, websocket_endpoint 함수에서 WebSocket을 처리하는 로직을 작성하였습니다. 클라이언트로부터 메시지를 수신하면, 해당 메시지를 다시 클라이언트로 전송합니다.

  3. FastAPI 애플리케이션을 실행합니다.
    uvicorn main:app --reload
    
  4. 웹 브라우저나 WebSocket 클라이언트를 통해 WebSocket에 연결합니다.
    const socket = new WebSocket("ws://localhost:8000/ws");
    
    socket.onmessage = function(event) {
        console.log("Received message: " + event.data);
    };
    
    socket.onopen = function(event) {
        socket.send("Hello, WebSocket!");
    };
    

    클라이언트에서 WebSocket에 연결하고, 메시지를 전송하면 서버에서 해당 메시지를 수신하고 다시 클라이언트로 전송됩니다.

결론

FastAPI는 강력한 웹 프레임워크로써 WebSocket을 지원하여 실시간 통신을 구현할 수 있습니다. 이번 포스트에서는 FastAPI에서 WebSocket을 사용하는 간단한 예제를 소개했습니다. FastAPI의 공식 문서를 참고하여 더 자세한 내용을 학습하시기 바랍니다.

참고 자료