HTML5 Server-Sent Events(SSE)入門:Webアプリでサーバーからのイベントを受信する方法
WebアプリケーションでServer-Sent Events(サーバー送信イベント、SSE)を利用するには、ドキュメント内に <eventsource> 要素を追加します。
<eventsource> 要素の src 属性には、永続的なHTTP接続を確立し、イベントを含むデータストリームを継続的に送信するURLを指定します。
このURLは、イベントデータの送信処理を担当するPHP、Perl、Pythonなどのサーバーサイドスクリプトを指すのが一般的です。
記述例
以下は、サーバーから配信される時刻情報を受け取って表示するアプリケーションの例です。
<!DOCTYPE HTML> <html> <head> <script> /* ここにイベント処理のロジックを定義 */ </script> </head> <body> <div id = "sse"> <eventsource src = "/cgi-bin/ticker.cgi" /> </div> <div id = "ticker"> <TIME> </div> </body> </html>
サーバー側のレスポンス形式
SSEを正しく動作させるためには、サーバー側が適切なヘッダーとデータ形式で応答する必要があります。具体的には、レスポンスの Content-Type を「text/event-stream」に設定し、「data:」というプレフィックスを付けた行でイベントデータを送信します。また、キャッシュを無効化するために「Cache-Control: no-cache」ヘッダーも併せて指定することが推奨されます。
サーバー側スクリプトの例(PHP)
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
echo "data: " . date('Y-m-d H:i:s') . "\n\n";
flush();
?>
補足:現在の実装では EventSource API が標準
なお、<eventsource> 要素は初期のHTML5ドラフトで提案されたものですが、現在の仕様では削除されており、主要ブラウザでもサポートされていません。現代のWebアプリケーションでは、代わりにJavaScriptの EventSource インターフェースを使用するのが標準的な方法です。
EventSource API を使った実装例
const source = new EventSource('/cgi-bin/ticker.cgi');
source.onmessage = function(event) {
document.getElementById('ticker').innerHTML = event.data;
};
// 接続エラー時の処理
source.onerror = function() {
console.log('サーバーとの接続が切断されました');
};
このように EventSource API を使用すれば、サーバーとの接続が切れた場合にも自動的に再接続が行われるため、堅牢なリアルタイム通信を実現できます。チャットアプリケーション、株価やニュースのティッカー、通知システムなど、サーバーからクライアントへの一方向のリアルタイム更新が必要な場面でSSEは非常に有効です。
-
HTML5のサーバー送信イベント(SSE)の仕組みと実装方法を解説
サーバー送信イベント(SSE)とはサーバー送信イベント(Server-Sent Events:SSE)は、サーバーからクライアントへデータをストリーミング配信する仕組みを標準化した技術です。クライアントが定期的にリクエストを繰り返すポーリング方式と異なり、サーバー側から一方向的にデータを継続的にプッシュできる点が大きな特徴です。基本的な使い方Webアプリケーションでサーバー送信イベントを利用するには、ドキュメント内に <eventsource> 要素を追加します。<eventsource> 要素の src 属性には、イベントデータを含むデータストリームを送信するための永
-
HTML5のレスポンシブ対応とは?Webデザインにおける応答性の重要性を解説
HTML5は、最新かつ人気の高いWebデザイン言語として、デザイン業界に大きな変革をもたらしました。従来のHTMLと比較したとき、HTML5を特別な存在にしている最大の要因こそが「レスポンシブ(応答性)」です。 Webページのレスポンシブ性とは、ページがブラウザ上に読み込まれた後、閲覧に使われたデバイス(PC、スマートフォン、タブレットなど)に応じて、適切な出力・表示を行う能力のことを指します。 旧来のHTMLには多くの制約があり、それが新バージョン誕生のきっかけとなりました。当時のWebデザイナーには、変化するテクノロジーに合わせて柔軟にページを作り込む自由度がなかったのです。 最新のテ