나중에 쓸것같아서 기본적인것만 적어둠.
웹소켓 가장 기본적인 통신 예제이며, 윈도우에서 작동을 확인했다. 이거 파이썬 예시를 한동안 못찾다가
스택오버플로우에서 기초적이고 좋은 예시를 발견해서 가져다가 씀.
웹소켓 공식 문서 : http://dev.w3.org/html5/websockets/
웹소켓 테스트용 사이트 : https://www.websocket.org/echo.html
tornado : https://pypi.python.org/pypi/tornado
서버 실행시키고 클라이언트 실행시키면 예시 메시지까지 같이 보인다. 별 설명 필요없음.
서버.
# -*- encoding: cp949 -*- import datetime import tornado.httpserver import tornado.websocket import tornado.ioloop import tornado.web class WSHandler(tornado.websocket.WebSocketHandler): clients = [] def open(self): print 'new connection' self.write_message("Hello World") WSHandler.clients.append(self) def on_message(self, message): print 'message received %s' % message self.write_message('ECHO: ' + message) def on_close(self): print 'connection closed' WSHandler.clients.remove(self) @classmethod def write_to_clients(cls): print "Writing to clients" for client in cls.clients: client.write_message("Hi there!") application = tornado.web.Application([ (r'/ws', WSHandler), ]) if __name__ == "__main__": http_server = tornado.httpserver.HTTPServer(application) http_server.listen(8888) tornado.ioloop.IOLoop.instance().add_timeout(datetime.timedelta(seconds=15), WSHandler.write_to_clients) tornado.ioloop.IOLoop.instance().start()
클라이언트.
#-*- coding: cp949 -*- import tornado.websocket from tornado import gen @gen.coroutine def test_ws(): client = yield tornado.websocket.websocket_connect("ws://localhost:8888/ws") client.write_message("Testing from client") msg = yield client.read_message() print("msg is %s" % msg) msg = yield client.read_message() print("msg is %s" % msg) msg = yield client.read_message() print("msg is %s" % msg) client.close() if __name__ == "__main__": tornado.ioloop.IOLoop.instance().run_sync(test_ws)
'Python > 2.7 information' 카테고리의 다른 글
is operator, raw string(r'', repr함수) (0) | 2015.07.20 |
---|---|
(나중 참고용) 캡쳐 프로그램, 후킹모듈 기본 (0) | 2015.06.06 |
파이썬다운(?) 코드. (0) | 2015.04.22 |
파이썬 출력 format관련. (0) | 2015.04.16 |
wargame.kr pyc_decompile (0) | 2015.03.29 |