[python] Flask를 사용하여 실시간 채팅 기능 구현
이 포스트에서는 Python의 Flask 웹 프레임워크를 사용해서 간단한 실시간 채팅 기능을 구현하는 방법에 대해 알아보겠습니다.
목차
- 개발 환경 설정
- Flask 웹 앱 생성
- WebSocket을 이용한 실시간 통신 구현
- 채팅 인터페이스 디자인
- 마무리
1. 개발 환경 설정
먼저, Python 3이 설치되어 있어야 합니다. Flask를 설치하기 위해서는 다음과 같이 명령어를 실행합니다.
pip install Flask
또한, 웹소켓을 사용하기 위해 Flask-SocketIO를 설치합니다.
pip install flask-socketio
## 2. Flask 웹 앱 생성
간단한 Flask 웹 앱을 생성합니다.
```python
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
socketio.run(app)
3. WebSocket을 이용한 실시간 통신 구현
WebSocket을 사용하여 클라이언트 간 실시간 통신을 구현합니다.
@socketio.on('message')
def handle_message(msg):
emit('message', msg, broadcast=True)
4. 채팅 인터페이스 디자인
마지막으로, 채팅 인터페이스를 디자인하고 클라이언트 측에서 WebSocket을 통해 메시지를 서버로 전송하도록 구현합니다.
<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<title>실시간 채팅</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.1.3/socket.io.js" integrity="sha384-/KR6pKu0DCgSiIB1f6I1F80KUVj/Uw1Cg3Q3mHH8W2AC" crossorigin="anonymous"></script>
</head>
<body>
<ul id="messages"></ul>
<input id="message_input" autocomplete="off" /><button onClick="sendMessage()">전송</button>
<script>
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('message', function(msg) {
var li = document.createElement('li');
li.appendChild(document.createTextNode(msg));
document.getElementById('messages').appendChild(li);
});
function sendMessage() {
var message = document.getElementById('message_input').value;
document.getElementById('message_input').value = '';
socket.send(message);
}
</script>
</body>
</html>
5. 마무리
이렇게 하면 실시간 채팅 기능이 구현된 간단한 Flask 애플리케이션이 완성됩니다. 이를 기반으로 확장하여 채팅방 생성, 사용자 인증, 이모티콘 및 파일 전송 등의 기능을 추가할 수 있습니다.