Tornado-SSEインタフェースを書く
1748 ワード
SSEの概要
サーバはクライアントにデータをプッシュし、多くのソリューションがあります.HTML 5には、「ポーリング」とWebSocketに加えて、Server-Sent Events(以下、SSEと略す)も用意されています.一般的に、HTTPプロトコルはクライアントがサーバに要求を開始するしかなく、サーバがクライアントに積極的にプッシュすることはできない.しかし、サーバがクライアントに宣言し、次に送信するストリーム情報(streaming)という特殊な状況があります.つまり、使い捨てのパケットではなく、1つのデータストリームが連続して送られてくるということです.このとき,クライアントは接続を閉じることなく,サーバからの新しいデータストリームをずっと待っている.本質的に、このような通信は情報をストリーミングする方式で、1回の時間の長いダウンロードを完成します.SSEはこのメカニズムを利用して,ストリーム情報を用いてブラウザに情報をプッシュする.HTTPプロトコルに基づいており、現在はIE/Edge以外のブラウザでサポートされています.[1]
コード#コード#
クライアント
リファレンスhttp://www.w3school.com.cn/html5/html_5_serversentevents.asp
サービス側
説明する
SSEサービス・エンド・コードを完了するには、次の手順に従います.はheadersに インタフェースにデッドサイクルを書き、サイクル中: は、 は、バッファデータを要求応答にリフレッシュする.
サービス側が起動すると、ブラウザを介してインタフェースにアクセスすると、要求は継続的にリフレッシュされ、条件
まとめ
SSEにより、サービス側がある操作を受信した後(例えば、テストレポートをアップロードした)、SSEインタフェースにフロントエンドJSに特定のデータを送信するように通知し、JSがそのデータを受信した後、リフレッシュ操作を行い、新しく生成したデータをページにリフレッシュすることができる.
実際には、SSEは、パフォーマンスの圧力をサービス側に移行し、クライアントブラウザのパフォーマンス消費を削減します.
リファレンス
[1]JavaScript標準リファレンスチュートリアル(alpha)、チェン一峰
サーバはクライアントにデータをプッシュし、多くのソリューションがあります.HTML 5には、「ポーリング」とWebSocketに加えて、Server-Sent Events(以下、SSEと略す)も用意されています.一般的に、HTTPプロトコルはクライアントがサーバに要求を開始するしかなく、サーバがクライアントに積極的にプッシュすることはできない.しかし、サーバがクライアントに宣言し、次に送信するストリーム情報(streaming)という特殊な状況があります.つまり、使い捨てのパケットではなく、1つのデータストリームが連続して送られてくるということです.このとき,クライアントは接続を閉じることなく,サーバからの新しいデータストリームをずっと待っている.本質的に、このような通信は情報をストリーミングする方式で、1回の時間の長いダウンロードを完成します.SSEはこのメカニズムを利用して,ストリーム情報を用いてブラウザに情報をプッシュする.HTTPプロトコルに基づいており、現在はIE/Edge以外のブラウザでサポートされています.[1]
コード#コード#
クライアント
リファレンスhttp://www.w3school.com.cn/html5/html_5_serversentevents.asp
サービス側
class ServerSentEvent(RequestHandler):
def __init__(self, *args, **kwargs):
super(ServerSentEvent, self).__init__(*args, **kwargs)
self.set_header('Content-Type', 'text/event-stream')
async def get(self):
while True:
if condition:
self.out_put()
time.sleep(2)
def out_put(self):
self.write('data:0
')
self.flush()
説明する
SSEサービス・エンド・コードを完了するには、次の手順に従います.
Content-Type: text/event-stream
を追加し、このインタフェースがsseインタフェースであることを示す.data:
で始まり、
で終わるデータを出力バッファに書き込む.サービス側が起動すると、ブラウザを介してインタフェースにアクセスすると、要求は継続的にリフレッシュされ、条件
condition
を満たす場合にdata:0
が出力される.まとめ
SSEにより、サービス側がある操作を受信した後(例えば、テストレポートをアップロードした)、SSEインタフェースにフロントエンドJSに特定のデータを送信するように通知し、JSがそのデータを受信した後、リフレッシュ操作を行い、新しく生成したデータをページにリフレッシュすることができる.
実際には、SSEは、パフォーマンスの圧力をサービス側に移行し、クライアントブラウザのパフォーマンス消費を削減します.
リファレンス
[1]JavaScript標準リファレンスチュートリアル(alpha)、チェン一峰