웹소켓(WebSocket)은 실시간 양방향 통신을 위한 프로토콜입니다. aiohttp는 Python에서 비동기 웹 애플리케이션을 개발하기 위한 웹 프레임워크입니다. 이번 글에서는 aiohttp를 사용하여 웹소켓 서버를 구성하는 방법에 대해 알아보겠습니다.
1. aiohttp 설치하기
먼저, 우리는 aiohttp를 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다.
pip install aiohttp
2. 새로운 aiohttp 웹소켓 서버 만들기
이제 새로운 aiohttp 웹소켓 서버를 만들어 보겠습니다. 아래의 예제 코드를 참고해주세요.
from aiohttp import web
import aiohttp
async def websocket_handler(request):
ws = web.WebSocketResponse()
await ws.prepare(request)
async for msg in ws:
if msg.type == aiohttp.WSMsgType.TEXT:
if msg.data == 'close':
await ws.close()
else:
await ws.send_str('You sent: {}'.format(msg.data))
elif msg.type == aiohttp.WSMsgType.ERROR:
print('WebSocket connection closed with exception {}'.format(ws.exception()))
return ws
app = web.Application()
app.router.add_get('/ws', websocket_handler)
web.run_app(app)
위의 코드는 aiohttp를 사용하여 새로운 웹소켓 서버를 생성하는 간단한 예제입니다. /ws
경로로 요청이 들어오면 websocket_handler
함수가 호출되어 웹소켓 연결을 처리합니다. 요청이 오면 서버는 클라이언트에게 메시지를 보내거나 메시지를 수신할 수 있습니다.
3. aiohttp 웹소켓 서버 실행하기
이제 웹소켓 서버를 실행해보겠습니다. 예제 코드를 실행하기 위해 터미널에서 다음 명령어를 사용합니다.
python app.py
웹소켓 서버는 localhost:8080/ws
주소에서 실행됩니다.
4. 클라이언트에서 웹소켓 서버에 연결하기
이제 클라이언트를 만들어 웹소켓 서버에 연결해보겠습니다. 웹소켓 클라이언트는 HTML과 JavaScript를 사용하여 작성할 수 있습니다. 아래의 HTML과 JavaScript 코드를 참고해주세요.
<html>
<head>
<script>
var ws = new WebSocket('ws://localhost:8080/ws');
ws.onopen = function () {
console.log('WebSocket connection established.');
ws.send('Hello from the client!');
};
ws.onmessage = function (event) {
console.log('Received message:', event.data);
};
ws.onclose = function () {
console.log('WebSocket connection closed.');
};
</script>
</head>
<body>
<h1>WebSocket Example</h1>
</body>
</html>
위 코드를 HTML 파일로 저장하고 웹 브라우저에서 실행하면 클라이언트가 웹소켓 서버에 연결되고 서버에서 보낸 메시지를 수신할 수 있습니다.
마치며
이번 글에서는 aiohttp를 사용하여 웹소켓 서버를 구성하는 방법을 알아보았습니다. aiohttp는 Python에서 비동기 웹 애플리케이션을 구성하는 강력한 도구입니다. 웹소켓을 사용하여 실시간 통신을 구현하는 경우, aiohttp는 확장성과 성능 면에서 우수한 선택이 될 수 있습니다.