[python] Flask에 웹소켓을 통한 실시간 채팅 구현하기

웹 개발에서 실시간으로 사용자들 간에 채팅을 할 수 있는 웹소켓(Websocket) 은 매우 중요한 기술 중 하나입니다. Python의 Flask 웹 프레임워크를 사용하여 간단하게 웹소켓을 구현하는 방법을 알아보겠습니다.

1. Flask-SocketIO 설치

우선 Flask 프로젝트에 웹소켓을 추가하려면 Flask-SocketIO 라이브러리를 설치해야 합니다. 아래의 명령어로 간단히 설치할 수 있습니다.

pip install flask-socketio

2. Flask 앱 초기화

다음으로, Flask 애플리케이션을 초기화하고 SocketIO를 초기화해야 합니다.

from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

3. 클라이언트 측 코드 구현

웹페이지에 웹소켓 클라이언트를 구현해야 합니다. 일반적으로 JavaScript를 사용하여 클라이언트 측 코드를 작성합니다. 여기에는 Socket.IO JavaScript 클라이언트를 로드하고, 서버와 연결하는 간단한 예제가 포함됩니다.

<!DOCTYPE html>
<html>
<head>
  <script src="https://cdn.socket.io/4.3.2/socket.io.min.js"></script>
  <script>
    var socket = io.connect('http://' + document.domain + ':' + location.port);
    socket.on('connect', function() {
        socket.emit('user_connected', {data: 'New user is connected!'});
    });
  </script>
</head>
<body>
  <h1>Real-time Chat</h1>
</body>
</html>

4. 서버 측 코드 구현

이제 실제로 채팅 이벤트를 처리하기 위해 서버 측 코드를 작성해야 합니다.

@socketio.on('user_connected')
def handle_user_connected(json):
    print('received json: ' + str(json))

위의 예제에서는 ‘user_connected’ 이벤트를 수신하고 그에 대한 처리를 하는 방법을 보여줍니다.

5. 어플리케이션 실행

마지막으로 Flask 애플리케이션을 실행하고 웹소켓을 통해 실시간 채팅 기능을 확인할 수 있습니다.

if __name__ == '__main__':
    socketio.run(app, debug=True)

이제 여러분은 Flask와 Flask-SocketIO를 사용하여 간단한 실시간 채팅 기능을 구현하는 방법을 알게 되었습니다! 이제 이것을 기반으로 더 다양하고 복잡한 채팅 기능을 추가해 나갈 수 있을 것입니다.

자세한 내용은 Flask-SocketIO 공식 문서를 참조하시기 바랍니다.