[파이썬] Flask에서의 WebSocket 클라이언트 구현

웹 개발에서 실시간으로 데이터를 주고받기 위해 WebSocket을 사용하는 경우가 많습니다. Flask는 간편하고 유연한 웹 프레임워크로 많은 사람들에게 사랑을 받고 있지만, 웹소켓 클라이언트를 구현하기 위해 추가적인 라이브러리가 필요합니다. 이번 포스트에서는 Flask에서 WebSocket 클라이언트를 구현하는 방법에 대해 알아보겠습니다.

웹소켓 클라이언트 라이브러리 설치

Flask에서 WebSocket 클라이언트를 구현하기 위해서는 Flask-SocketIO 라이브러리를 설치해야 합니다. 아래 명령을 사용하여 설치할 수 있습니다.

pip install flask-socketio

WebSocket 클라이언트 구현

아래는 Flask에서의 WebSocket 클라이언트를 구현하는 간단한 예제입니다.

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('connect')
def on_connect():
    emit('server_message', {'data': 'WebSocket connected'})

@socketio.on('disconnect')
def on_disconnect():
    print('WebSocket disconnected')

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

위 예제에서는 Flask-SocketIO를 사용하여 WebSocket 클라이언트를 구현하고 있습니다. @socketio.on('connect') 데코레이터를 사용하여 클라이언트가 서버에 연결되었을 때의 동작을 정의할 수 있습니다. 마찬가지로 @socketio.on('disconnect') 데코레이터를 사용하여 클라이언트가 연결을 끊었을 때의 동작을 정의할 수 있습니다.

클라이언트 측 구현

위 예제에서 서버 측은 구현되었지만, 클라이언트 측은 아직 구현되지 않았습니다. 클라이언트 측에서 웹소켓 연결을 구현하기 위해서는 JavaScript WebSocket API를 사용할 수 있습니다. 이를 이용하여 Flask 서버와 통신할 수 있습니다.

아래는 간단한 클라이언트 측 JavaScript 예제입니다.

var socket = io.connect('http://localhost:5000');

socket.on('connect', function() {
    console.log('WebSocket connected');
});

socket.on('server_message', function(message) {
    console.log('Received message from server:', message);
});

socket.on('disconnect', function() {
    console.log('WebSocket disconnected');
});

위 예제에서는 io.connect()를 사용하여 서버에 연결하고, socket.on()을 사용하여 서버로부터 메시지를 수신하는 동작을 정의하고 있습니다.

결론

이번 포스트에서는 Flask에서 WebSocket 클라이언트를 구현하는 방법에 대해 알아보았습니다. Flask-SocketIO 라이브러리를 사용하여 서버 측에서 클라이언트와의 웹소켓 통신을 구현할 수 있으며, 클라이언트 측에서는 JavaScript WebSocket API를 사용하여 서버와 통신할 수 있습니다. 이를 활용하여 실시간으로 데이터를 주고받는 웹 애플리케이션을 개발할 수 있습니다.