[TOC]
소개
웹 소켓은 실시간 양방향 통신을 지원하기 위한 기술로, Tornado는 Python의 비동기 웹 프레임워크로서 웹 소켓을 쉽게 개발할 수 있는 기능을 제공합니다. 이번 블로그 포스트에서는 Tornado를 사용하여 간단한 웹 소켓 서버를 개발하는 방법을 알아보겠습니다.
설치
Tornado를 설치하기 위해서는 pip를 사용합니다. 아래의 명령어를 터미널에 입력하여 Tornado를 설치합니다.
pip install tornado
웹 소켓 서버 개발
Tornado를 사용하여 웹 소켓 서버를 개발하는 방법은 매우 간단합니다. 아래의 예제 코드를 참고하여 웹 소켓 서버를 개발할 수 있습니다.
import tornado.ioloop
import tornado.web
import tornado.websocket
class WebSocketHandler(tornado.websocket.WebSocketHandler):
def open(self):
print("WebSocket 연결이 열렸습니다.")
def on_message(self, message):
print("메시지를 받았습니다:", message)
self.write_message("메시지를 받았습니다.")
def on_close(self):
print("WebSocket 연결이 닫혔습니다.")
def make_app():
return tornado.web.Application([
(r"/ws", WebSocketHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
위의 예제 코드는 Tornado의 WebSocketHandler
를 상속받아 웹 소켓 서버를 구현한 것입니다. open
, on_message
, on_close
메서드를 오버라이딩하여 웹 소켓 연결이 열리고, 메시지를 받았을 때, 연결이 닫혔을 때의 동작을 정의할 수 있습니다.
서버 실행
해당 예제 코드를 실행하기 위해서는 터미널에서 다음과 같은 명령어를 입력합니다.
python server.py
서버가 실행되면 WebSocket 연결이 열렸습니다.
메시지가 출력됩니다. 이제 클라이언트와 메시지를 주고받을 수 있습니다.
클라이언트와의 통신
웹 소켓 서버와 클라이언트 간의 통신을 위해서는 웹 소켓 클라이언트를 사용해야 합니다. 이를 위해 JavaScript에서 제공하는 WebSocket
객체를 사용할 수 있습니다.
var socket = new WebSocket("ws://localhost:8888/ws");
socket.onopen = function() {
console.log("WebSocket 연결이 열렸습니다.");
};
socket.onmessage = function(event) {
console.log("메시지를 받았습니다:", event.data);
};
socket.onclose = function() {
console.log("WebSocket 연결이 닫혔습니다.");
};
위의 코드는 웹 소켓 서버에 연결하는 JavaScript 코드입니다. onopen
, onmessage
, onclose
이벤트 핸들러를 등록하여 연결이 열렸을 때, 메시지를 받았을 때, 연결이 닫혔을 때의 동작을 정의할 수 있습니다.
결론
Tornado를 사용하여 웹 소켓 서버를 개발하는 방법에 대해 알아보았습니다. Tornado의 간편한 API를 활용하면 몇 줄의 코드로도 강력한 웹 소켓 서버를 구현할 수 있습니다. 추가적인 기능이나 구현 방법에 대해서는 Tornado 공식 문서를 참고하시기 바랍니다.