1. テーマ: サーバーによって動的に生成されたログファイルのリアルタイム表示
2. プロセス:
1. クライアントブラウザはサーバーとの WebSocket リンクを確立し、サーバーはリンクを保存するために一時停止します。インスタンスを作成し、新しいコンテンツがリターン アクションをトリガーするのを待ちます
2. ログ サーバー スクリプト は、新しいコンテンツを検出するために をループし、新しい行を見つけて、新しいコンテンツを送信するために API POST を tornado に送信するのを待ちます
3. Tornado プロセッサ新しいコンテンツを受信し、WebSocket 経由で保存されたクライアント リンクに戻ります
4. クライアント ブラウザは新しいコンテンツを受信し、それを変更して表示します
3. 1. トルネード サーバー URL
ルーティング2. サーバー エンド WebSocket ハンドラー (WriteNewLinesHandler)、リンク処理クラスとクライアント WebSocket リクエストを保存および削除します<div align="center">
<h2>this logs monitor</h2>
<div style="width: 70%" id="main">
<!-- 行展示 -->
</div>
</div>
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()
})
以上がPython Tornado WebSocket のリアルタイムログ表示のサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。