[python] 웹 서버에 웹소켓 통신 구현하기

이번 글에서는 Python을 사용하여 웹 서버에 웹소켓(WebSocket) 통신을 구현하는 방법에 대해 알아보겠습니다. 웹소켓은 양방향 통신을 제공하는 프로토콜로, 실시간으로 데이터를 주고받을 수 있습니다.

웹소켓 통신 라이브러리 설치

Python에서 웹소켓 통신을 구현하기 위해서는 websockets 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 websockets 라이브러리를 설치합니다.

pip install websockets

웹소켓 서버 구현하기

이제 웹소켓 서버를 구현해보겠습니다. 아래는 간단한 예제 코드입니다.

import asyncio
import websockets

async def websocket_handler(websocket, path):
    # 클라이언트와의 연결이 맺어지면 실행되는 함수
    print("클라이언트가 연결되었습니다.")

    try:
        while True:
            # 클라이언트로부터 데이터를 수신합니다.
            data = await websocket.recv()
            print(f"수신된 데이터: {data}")

            # 수신한 데이터에 대한 처리 로직을 작성합니다.

            # 클라이언트에게 데이터를 전송합니다.
            await websocket.send("데이터 전송 완료")
        
    finally:
        # 클라이언트와의 연결이 종료되면 실행되는 함수
        print("클라이언트와의 연결이 종료되었습니다.")

async def main():
    # 웹소켓 서버를 실행합니다.
    async with websockets.serve(websocket_handler, "localhost", 8000):
        await asyncio.Future()

# main 함수를 실행합니다.
asyncio.run(main())

이 코드는 websockets 라이브러리를 사용하여 웹소켓 서버를 구현하는 예제입니다. 클라이언트로부터 데이터를 수신하고, 해당 데이터에 대한 처리 로직을 작성한 뒤, 클라이언트에게 데이터를 전송하는 간단한 예제입니다.

웹소켓 클라이언트 사용하기

Python에서 웹소켓 클라이언트를 사용하기 위해서는 websockets 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 websockets 라이브러리를 설치합니다.

pip install websockets

웹소켓 클라이언트를 사용하기 위해서는 다음과 같이 코드를 작성할 수 있습니다.

import asyncio
import websockets

async def main():
    async with websockets.connect("ws://localhost:8000") as websocket:
        while True:
            # 서버로부터 데이터를 수신합니다.
            data = await websocket.recv()
            print(f"수신된 데이터: {data}")

            # 데이터에 대한 처리 로직을 작성합니다.

            # 서버로 데이터를 전송합니다.
            await websocket.send("데이터 전송 완료")

# main 함수를 실행합니다.
asyncio.run(main())

위 코드는 websockets 라이브러리를 사용하여 웹소켓 클라이언트를 구현하는 예제입니다. 서버로부터 데이터를 수신하고, 해당 데이터에 대한 처리 로직을 작성한 뒤, 서버로 데이터를 전송하는 간단한 예제입니다.

마무리

이번 글에서는 Python을 사용하여 웹 서버에 웹소켓 통신을 구현하는 방법에 대해 알아보았습니다. 웹소켓을 사용하면 양방향 통신이 가능하므로, 실시간으로 데이터를 주고받아야 하는 경우에 유용하게 사용할 수 있습니다. websockets 라이브러리를 사용하면 쉽게 웹소켓 통신을 구현할 수 있으니, 필요한 경우에는 활용해보시기 바랍니다.

참고 자료