Server-Sent Events はこんなに簡単
昨晩 twitter API をガシガシ叩いてた勢いで、Server-Sent Events のコードが書きたくなりました。まずは軽くお試し程度に。
クライアント側の HTML, JavaScript。キモとなっているのはこれだけです。
var source = new EventSource('/cgi-bin/sse_source.py'); source.onmessage = function(event) { document.getElementById("clock").innerHTML = event.data; }
そしてサーバ側のコード cgi-bin/sse_source.py はこれだけ。
#!/usr/bin/python import time print "Content-Type: text/event-stream" print print "data: %s" % time.strftime("%H:%M:%S") print "retry: 1000"
現在時刻の文字列をクライアントに送信して、1000ミリ秒待ってねとお願いしています。
これら2つのファイルを用意したら、スーパー Python パワーの出番です。html が置いてあるディレクトリで魔法のコマンドを打ちます。
python -m CGIHTTPServer
するとウェブサーバが localhost:8000 で立ちます。カレントディレクトリのファイルはそのまま公開され、cgi-bin にあるファイルは CGI として実行されます。CGIHTTPServer の詳細はライブラリリファレンスを参照してください。
ファイル一式を zip して sse.zip として置いておきました。