[파이썬] web2py의 웹소켓 지원

웹소켓은 실시간 양방향 통신을 제공하는 강력한 프로토콜입니다. 웹어플리케이션을 개발할 때 실시간 업데이트와 빠른 데이터 푸시가 필요한 경우 웹소켓을 사용할 수 있습니다. 이 글에서는 웹소켓을 지원하는 파이썬 프레임워크인 web2py에서 웹소켓을 어떻게 사용하는지 알아보겠습니다.

웹소켓이란?

웹소켓은 HTML5에 추가된 프로토콜로, 클라이언트와 서버 사이의 실시간 양방향 통신을 가능하게 해줍니다. HTTP와 달리, 웹소켓은 서버와 클라이언트가 지속적인 연결을 유지하며 데이터를 주고받을 수 있습니다. 이는 실시간 채팅 애플리케이션, 주식 시세 업데이트, 협업 도구 등 다양한 분야에서 활용될 수 있습니다.

web2py에서 웹소켓 사용하기

web2py는 웹소켓을 사용하기 위해 py4web라는 패키지를 제공합니다. 이 패키지를 설치하면 웹소켓을 지원하는 웹어플리케이션을 쉽게 개발할 수 있습니다. 예를 들어, 간단한 채팅 애플리케이션을 만들어보겠습니다.

from py4web import action, get_app

# 웹소켓 핸들러
@action("ws/chat")
def chat():
    def ws_handler(ws):
        while True:
            message = ws.receive()
            if message:
                ws.send("You said: {0}".format(message))
    return get_app().websocket(ws_handler)

위 코드는 /ws/chat 경로로 요청이 들어오면 웹소켓 핸들러를 실행하는 액션입니다. 핸들러는 클라이언트로부터 메시지를 받아서 그대로 다시 전송하는 간단한 동작을 수행합니다.

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

웹소켓 핸들러를 작성했으니 이제 클라이언트에서 웹소켓에 접속하고 메시지를 주고받는 방법을 알아보겠습니다. JavaScript에서는 WebSocket 객체를 사용하여 웹소켓에 접속할 수 있습니다.

var socket = new WebSocket("ws://localhost:8000/ws/chat");

// 연결 이벤트 핸들러
socket.onopen = function() {
    console.log("WebSocket connected");
};

// 메시지 수신 이벤트 핸들러
socket.onmessage = function(event) {
    console.log("Received message: " + event.data);
};

// 메시지 전송
socket.send("Hello, server!");

위 코드는 localhost의 8000번 포트에 접속하는 웹소켓 클라이언트를 생성하고, 연결, 메시지 수신 이벤트 핸들러를 정의하며, 메시지를 전송하는 방법을 보여줍니다.

결론

web2py는 py4web 패키지를 통해 웹소켓을 지원하며, 실시간 통신이 필요한 웹어플리케이션을 쉽게 개발할 수 있도록 도와줍니다. 웹소켓을 사용하여 실시간 업데이트나 빠른 데이터 푸시 기능을 구현해야 할 때, web2py를 고려해보세요.