1. 테마: 서버에서 동적으로 생성한 로그 파일을 실시간으로 표시
2. 프로세스:
1. 클라이언트 브라우저 서버와 웹소켓 링크를 설정하면 서버는 링크 인스턴스를 저장하기 위해 전화를 끊고 새 콘텐츠가 반환 작업을 트리거할 때까지 기다립니다
2. 로그 서버 스크립트는 루프 를 검색하여 검색합니다. 새 콘텐츠, 새 줄 찾기 및 토네이도 대기 API POST가 새 콘텐츠 전송
3. 토네이도 프로세서는 새 콘텐츠를 수신하고 websocket을 통해 저장된 클라이언트 링크에 새 줄을 반환합니다
4. 클라이언트 브라우저는 새로운 콘텐츠, 수정, 표시
3. 코드:
1. 토네이도 서버 URL을 받습니다. >, 기본 페이지 핸들러 및 html:
#模块路径根据自身项目而定 (r'/logs/index/', 'apps.logs.handler.IndexHandler'), (r'/logs/newlinesforcallbacker/', 'apps.logs.handler.WriteNewLinesHandler'), (r'/logs/newlinesforserver/', 'apps.logs.handler.ReceiveNewLinesHandler'),
class IndexHandler(BaseHandler): ''' 主页 ''' def get(self, *args, **kwargs): self.render('logs/index.html')
<div align="center"> <h2>this logs monitor</h2> <div style="width: 70%" id="main"> <!-- 行展示 --> </div> </div>
2. 서버측 웹소켓 핸들러(WriteNewLinesHandler), 링크 처리 클래스 및 클라이언트측 웹소켓 요청 js 저장 및 삭제
class ProStatus(object): ''' 处理类 ''' w_register = [] def register(self, callbacker): ''' 记录客户端连接实例 ''' self.w_register.append(callbacker) def unregister(self, callbacker): ''' 删除客户端连接实例 ''' self.w_register.remove(callbacker) def makelines(self, lines): ''' 处理接受的行内容 ''' pass def trigger(self, line): ''' 向所有被记录客户端发送最新内容 ''' pass class WriteNewLinesHandler(tornado.websocket.WebSocketHandler): ''' 接受websocket链接,保存链接实例 ''' def check_origin(self, origin): #针对websocket处理类重写同源检查的方法 return True def open(self): ''' 处理新的连接 ''' ProStatus().register(self) def on_close(self): ProStatus().unregister(self) #删除客户端连接 def on_message(self, message): pass
$(function(){ function requestText(){ host = "ws://" + location.hostname + ":" + location.port + "/logs/newlinesforcallbacker/" websocket = new WebSocket(host) websocket.onopen = function(evt){} // 建立连接 websocket.onmessage = function(evt){ // 获取服务器返回的信息 data = $.parseJSON(evt.data) $("#main").append(data+"</br>") //写入页面 } websocket.onerror = function(evt){} } requestText() })
3. tornado는 스크립트가 처리 핸들러(ReceiveNewLinesHandler)를 위해 새 콘텐츠를 제출할 때까지 기다린 후 일시 중지된 클라이언트 함수 에 새 콘텐츠를 보내고 로그를 탐색하여 새 콘텐츠 스크립트를 제출합니다아아아아아아
위 내용은 Python Tornado WebSocket 실시간 로그 표시를 위한 예제 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!