[파이썬] Flask를 이용한 웹소켓 통신
웹소켓은 실시간으로 양방향 통신을 할 수 있는 프로토콜입니다. 이를 이용하여 실시간 채팅, 실시간 게임 등 다양한 애플리케이션을 개발할 수 있습니다. 이번 포스트에서는 Flask를 이용하여 웹소켓 통신을 구현하는 방법에 대해 알아보겠습니다.
Flask-SocketIO
Flask-SocketIO는 Flask 애플리케이션에서 웹소켓 통신을 구현할 수 있도록 도와주는 라이브러리입니다. 다음과 같이 Flask-SocketIO를 설치할 수 있습니다.
pip install flask-socketio
예제 코드
다음은 Flask를 이용하여 간단한 채팅 애플리케이션을 구현한 예제 코드입니다.
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secretkey'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('message')
def handle_message(message):
emit('message', message, broadcast=True)
if __name__ == '__main__':
socketio.run(app)
위 코드에서는 Flask-SocketIO를 이용하여 /
경로에 연결된 클라이언트들 간에 메시지를 주고받을 수 있습니다.
HTML 템플릿
위 예제 코드에서는 index.html
파일을 렌더링하는 것을 볼 수 있습니다. 이 파일은 간단한 채팅 화면을 구현하기 위한 HTML 템플릿입니다.
<!DOCTYPE html>
<html>
<head>
<title>채팅 애플리케이션</title>
</head>
<body>
<ul id="messages"></ul>
<input id="input" type="text" autocomplete="off" />
<button id="send">전송</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.1.3/socket.io.js"></script>
<script>
var socket = io();
var input = document.getElementById("input");
var sendButton = document.getElementById("send");
var messages = document.getElementById("messages");
sendButton.onclick = function() {
var message = input.value;
if (message.trim() !== '') {
socket.emit("message", message);
input.value = '';
}
};
socket.on("message", function(message) {
var li = document.createElement("li");
li.innerHTML = message;
messages.appendChild(li);
});
</script>
</body>
</html>
위 템플릿은 간단한 채팅창을 구현하기 위해 필요한 요소들을 포함하고 있습니다.
실행하기
위 코드와 템플릿 파일을 작성한 뒤, 다음 명령어를 실행하여 Flask 애플리케이션을 실행할 수 있습니다.
python app.py
애플리케이션을 실행한 후 웹 브라우저에서 http://localhost:5000
에 접속하면 채팅 애플리케이션을 사용할 수 있습니다.
마무리
이번 포스트에서는 Flask를 이용하여 웹소켓 통신을 구현하는 방법에 대해 알아보았습니다. Flask-SocketIO의 간편한 인터페이스를 통해 실시간 통신을 구현할 수 있으며, 이를 활용하여 다양한 실시간 애플리케이션을 개발할 수 있습니다.