본문 바로가기
■ 칼퇴를 위한 파이썬 : 사례

파이썬으로 웹 애플리케이션 개발하기: 웹 소켓 통신

by 포탈메이커 2023. 7. 17.

파이썬으로 웹 애플리케이션 개발하기: 웹 소켓 통신

소개

웹 애플리케이션을 개발할 때 사용되는 파이썬은 많은 기능과 라이브러리를 제공합니다. 그 중에서 웹 소켓(WebSocket) 통신은 실시간으로 데이터를 주고받을 수 있는 강력한 도구입니다. 이번 포스팅에서는 파이썬을 사용하여 웹 소켓 통신을 어떻게 개발하는지 알아보겠습니다.

웹 소켓이란?

웹 소켓은 단방향 통신이 아닌 양방향으로 데이터를 주고받을 수 있는 기술입니다. 기존의 HTTP 프로토콜은 클라이언트가 요청을 보내고 서버가 응답을 보내는 방식으로 동작하며, 이러한 특징으로 인해 실시간으로 데이터를 주고받기 어려웠습니다. 그에 반해 웹 소켓은 TCP 소켓을 이용하여 클라이언트와 서버 간에 양방향 통신을 가능하게 합니다.

파이썬에서 웹 소켓 사용하기

파이썬에서 웹 소켓을 사용하기 위해서는 websockets 라이브러리를 설치해야 합니다. 다음과 같은 명령을 사용하여 websockets 라이브러리를 설치할 수 있습니다.

shell pip install websockets

설치가 완료되었다면, 다음과 같이 간단한 예제를 통해 파이썬에서 웹 소켓을 사용해보겠습니다.

```python import asyncio import websockets

async def hello(websocket, path): name = await websocket.recv() print(f"Received message from {name}") greeting = f"Hello, {name}!" await websocket.send(greeting) print(f"Sent message to {name}")

start_server = websockets.serve(hello, "localhost", 8000)

asyncio.geteventloop().rununtilcomplete(startserver) asyncio.geteventloop().runforever() ```

위 예제에서는 hello라는 함수를 정의하고, 클라이언트로부터 메시지를 받고 응답을 보내는 기능을 구현했습니다. 또한, websockets.serve를 사용하여 서버를 시작하고, asyncio.get_event_loop().run_until_completeasyncio.get_event_loop().run_forever를 사용하여 서버를 계속 실행시킵니다.

웹 소켓 클라이언트

웹 소켓을 사용하기 위해서는 클라이언트도 필요합니다. 브라우저를 통해 웹 소켓을 사용할 수도 있고, 파이썬을 통해 작성된 웹 소켓 클라이언트도 사용할 수 있습니다. 파이썬에서는 websockets 라이브러리를 사용하여 웹 소켓 클라이언트를 구현할 수 있습니다.

```python import asyncio import websockets

async def hello(): uri = "ws://localhost:8000" async with websockets.connect(uri) as websocket: name = input("What is your name? ") await websocket.send(name) print(f"Sent message to server: {name}") greeting = await websocket.recv() print(f"Received message from server: {greeting}")

asyncio.geteventloop().rununtilcomplete(hello()) ```

위 예제에서는 hello라는 함수를 정의하고, 사용자로부터 이름을 입력 받아 서버로 메시지를 전송하고 응답을 받는 기능을 구현했습니다. websockets.connect를 사용하여 서버에 연결하고, await websocket.sendawait websocket.recv를 사용하여 데이터를 주고받을 수 있습니다.

결론

파이썬을 사용하여 웹 애플리케이션을 개발할 때 웹 소켓을 사용하면 실시간으로 데이터를 주고받을 수 있습니다. websockets 라이브러리를 사용하여 웹 소켓을 구현하는 방법을 알아보았습니다. 웹 소켓을 통해 실시간으로 데이터를 처리하고 웹 애플리케이션을 개발하는 과정에서 파이썬은 강력한 도구로 사용될 수 있습니다.