[파이썬] 웹 프레임워크를 이용한 실시간 문서 공유

팀 단위로 협업하는 개발 프로젝트에서 실시간으로 문서를 공유하고 수정하는 기능은 매우 중요합니다. 이런 요구사항을 충족시키기 위해 Python 웹 프레임워크를 사용하여 실시간 문서 공유 기능을 구현해보겠습니다.

웹 프레임워크 선택

Python에서 웹 개발을 위한 다양한 프레임워크가 있지만, 여기서는 Flask를 선택하겠습니다. Flask는 가벼우면서도 강력한 웹 프레임워크로 초보자부터 전문가까지 사용하기 쉽습니다.

실시간 통신을 위한 웹 소켓 (WebSocket)

문서 공유 기능을 구현하기 위해서는 실시간 통신을 지원하는 기술이 필요합니다. 이를 위해 웹 소켓(WebSocket)을 사용하겠습니다. 웹 소켓은 클라이언트와 서버 간 양방향 통신을 제공하는 프로토콜로, 실시간 데이터 전송을 간편하게 할 수 있습니다.

Flask-SocketIO 설치

Flask-SocketIO는 Flask와 웹 소켓을 쉽게 통합해주는 확장 패키지입니다. Flask-SocketIO를 설치하기 위해 다음 명령을 실행해주세요:

pip install flask-socketio

Flask 애플리케이션 설정

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)

@app.route('/')
def index():
    return render_template('index.html')

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

위 코드에서는 Flask 애플리케이션을 생성하고, SECRET_KEY를 설정해줍니다. 그리고 루트 URL(‘/’)에서는 index.html 템플릿을 렌더링하여 보여줍니다.

클라이언트에서 웹 소켓 사용하기

클라이언트에서는 socket.io.js 스크립트를 로드하여 웹 소켓을 사용할 수 있습니다. 이 스크립트를 HTML 파일에 추가해보겠습니다.

<!doctype html>
<html>
<head>
    <title>실시간 문서 공유</title>
    <script src="https://cdn.socket.io/socket.io-3.1.0.min.js"></script>
</head>
<body>
    <h1>실시간 문서 공유</h1>
    <div id="content">
        <!-- 문서 내용 -->
    </div>

    <script>
        const socket = io();

        // 웹 소켓 이벤트 처리
        socket.on('connect', () => {
            console.log('웹 소켓 연결 성공');
        });

        socket.on('disconnect', () => {
            console.log('웹 소켓 연결 해제');
        });

        socket.on('update', (data) => {
            console.log('문서 업데이트:', data);
            // 문서 업데이트 처리
        });
    </script>
</body>
</html>

위 코드에서는 socket.io.js 스크립트를 로드하고, 웹 소켓 이벤트(connect, disconnect, update)를 처리하는 JavaScript 코드를 작성했습니다. update 이벤트에서는 문서 내용 업데이트를 처리할 수 있도록 작성해야 합니다.

서버에서 웹 소켓 이벤트 처리

Flask 서버에서는 socketio 객체를 사용하여 웹 소켓 이벤트를 처리해줄 수 있습니다. 예를 들어, 클라이언트로부터 업데이트된 문서 내용을 받아서 다른 클라이언트들에게 전달해주는 코드를 작성해보겠습니다.

from flask_socketio import emit

@socketio.on('update')
def handle_update(data):
    # 업데이트된 문서 내용을 다른 클라이언트들에게 전달
    emit('update', data, broadcast=True)

위 코드에서는 클라이언트로부터 받은 업데이트된 문서 내용을 다시 update 이벤트를 통해 모든 클라이언트에게 전달해줍니다.

결론

이제 웹 프레임워크를 이용하여 실시간 문서 공유 기능을 구현하는 방법을 알아보았습니다. Flask와 Flask-SocketIO를 사용하여 간편하게 웹 소켓을 활용할 수 있습니다. 이러한 기술을 사용하면 팀 단위로 협업하는 프로젝트에서 실시간 문서 공유 기능을 구현할 수 있습니다.

웹 프레임워크를 이용한 실시간 문서 공유 in Python을 통해 효율적인 협업을 즐겨보세요!