[파이썬] Flask에서의 웹 소켓 사용

웹 소켓은 실시간 양방향 통신을 가능하게 해주는 프로토콜입니다. Flask는 웹 개발을 위한 파이썬 마이크로 웹 프레임워크로 알려져 있지만, Flask 애플리케이션에서도 웹 소켓을 사용할 수 있습니다. 이번 글에서는 Flask에서의 웹 소켓 사용 방법에 대해 알아보겠습니다.

1. Flask-SocketIO 설치하기

Flask-SocketIO는 Flask 애플리케이션에서 웹 소켓을 사용하기 위한 라이브러리입니다. 설치하기 위해서는 pip를 사용할 수 있습니다.

pip install flask-socketio

2. 웹 소켓 서버 설정하기

Flask-SocketIO를 사용하여 웹 소켓 서버를 설정하는 방법은 간단합니다. Flask 애플리케이션 객체를 생성한 뒤, SocketIO 객체를 생성해서 웹 소켓 서버를 연결하면 됩니다.

from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
socketio = SocketIO(app)

3. 웹 소켓 이벤트 처리하기

웹 소켓 이벤트는 사용자와 서버 간의 통신을 담당합니다. Flask-SocketIO는 @socketio.on 데코레이터를 사용하여 이벤트 처리 함수를 정의할 수 있습니다.

@socketio.on('message')
def handle_message(message):
    # 웹 소켓 클라이언트로부터 메시지를 받았을 때 실행되는 함수
    print('Received message: ' + message)

4. 웹 소켓 클라이언트 사용하기

웹 소켓 클라이언트는 자바스크립트를 사용하여 구현할 수 있습니다. Flask-SocketIO는 클라이언트 라이브러리를 제공하고 있으며, 이를 사용하여 서버와 연결할 수 있습니다.

<!DOCTYPE html>
<html>
<head>
    <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
</head>
<body>
    <script>
        var socket = io.connect('http://localhost:5000');
        socket.on('connect', function() {
            console.log('Connected to the server');
        });
        socket.on('message', function(data) {
            console.log('Received message: ' + data);
        });
    </script>
</body>
</html>

5. 웹 소켓 서버 실행하기

마지막으로 Flask 애플리케이션 코드에서 socketio.run()을 호출하여 웹 소켓 서버를 실행할 수 있습니다.

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

이것으로 Flask에서 웹 소켓을 사용하는 방법에 대해 알아보았습니다. Flask-SocketIO를 사용하여 실시간 양방향 통신 기능을 구현할 수 있으며, 웹 소켓 클라이언트는 자바스크립트를 통해 구현할 수 있습니다. Flask와 웹 소켓을 함께 사용하면 실시간으로 업데이트되는 웹 애플리케이션을 쉽게 구현할 수 있습니다.