[파이썬] socket 웹 소켓 서버 구축하기

이번 포스트에서는 Python을 사용하여 Socket을 이용한 웹 소켓 서버를 구축하는 방법에 대해 알아보겠습니다. 웹 소켓은 실시간 양방향 통신을 제공하는 프로토콜로, 실시간 채팅 애플리케이션, 실시간 게임 등에 널리 활용됩니다.

소켓과 웹 소켓

소켓은 네트워크 통신을 위한 API로, 클라이언트와 서버 간에 데이터를 주고받을 수 있도록 해줍니다. 웹 소켓은 정확히는 HTML5의 일부분으로, 웹 애플리케이션에서 소켓을 사용할 수 있도록 해줍니다.

Flask 및 Flask-SocketIO 설치하기

이 예제에서는 Flask 웹 프레임워크를 사용하여 웹 소켓 서버를 구축하겠습니다. 먼저 Flask를 설치하기 위해 다음 명령을 실행합니다:

pip install Flask

Flask를 설치한 후, Flask-SocketIO를 설치해야 합니다. Flask-SocketIO는 Flask 확장 라이브러리로, 웹 소켓 지원을 제공해주는 패키지입니다. 다음 명령을 실행하여 Flask-SocketIO를 설치합니다:

pip install flask-socketio

소켓 서버 생성하기

이제 실제로 소켓 서버를 생성해보겠습니다. 다음은 기본적인 Flask 애플리케이션에 Flask-SocketIO를 추가하여 웹 소켓 서버를 생성하는 예제입니다.

from flask import Flask
from flask_socketio import SocketIO

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

@socketio.on('connect')
def handle_connect():
    print('Client connected')

@socketio.on('disconnect')
def handle_disconnect():
    print('Client disconnected')

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

위의 예제에서는 Flask-SocketIO의 SocketIO 클래스를 사용하여 socketio 객체를 생성합니다. @socketio.on() 데코레이터를 사용하여 연결 및 연결 해제 이벤트에 대한 콜백 함수를 등록할 수 있습니다.

클라이언트와 통신하기

이제 클라이언트와 웹 소켓을 통해 실시간으로 통신할 수 있습니다. 클라이언트에서 소켓 객체를 생성하고 서버에 연결하는 예제를 보겠습니다.

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.1.3/socket.io.js"></script>
<script>
    const socket = io.connect('http://localhost:5000');

    socket.on('connect', () => {
        console.log('Connected to server');
    });

    socket.on('disconnect', () => {
        console.log('Disconnected from server');
    });
</script>

위의 예제에서는 Socket.IO 라이브러리를 사용하여 소켓 클라이언트를 생성합니다. io.connect() 메소드를 사용하여 서버에 연결하고, connectdisconnect 이벤트에 대한 리스너를 등록합니다.

결론

이제 Python을 사용하여 Socket 웹 소켓 서버를 구축하는 방법을 알아보았습니다. Flask와 Flask-SocketIO의 조합을 사용하면 간단한 웹 소켓 서버를 만들 수 있습니다. 웹 소켓을 사용하여 실시간 통신을 구현하고, 웹 애플리케이션에서 실시간 기능을 추가할 수 있습니다.

더 자세한 정보와 기능은 Flask-SocketIO 공식 문서를 참조하시기 바랍니다. Happy coding!