6章リアルタイムWebアプリケーション

Webアプリケーションにおけるクライアント・サーバ間のコミュニケーションは、典型的にはクライアントが送信したリクエストに対しサーバがレスポンスを返すというものです。このパターンでは、クライアントがサーバの最新情報を取得するために、サーバにリクエストを送る必要があります。「5章 HTTPサーバとHTTPクライアント」で作成したユニバーサルWebアプリケーションでは、ブラウザでページを開いた直後はその時点での最新のToDo一覧が表示されます。しかしページを開いたまま10分経過したら、その情報は古くなっている可能性があります。新しいToDoが追加されているかもしれませんし、未完了だったToDoが完了しているかもしれません。古い情報を元に作業していたら、処理すべきタスクを放置したまま完了したタスクを無駄に繰り返してしまいかねません。このような事態を避けるには、ブラウザを定期的にリロードして常に最新のToDo一覧を確認する必要があります。

これに対し、ブラウザリロードなどのユーザー操作によることなく、クライアントサイドにサーバの最新情報を同期させるような仕組みを持つWebアプリケーションをリアルタイムWebアプリケーションと呼びます。本章では複数のリアルタイムWebアプリケーションの実装方式を学び、その一部を使って実際にToDo管理アプリケーションをリアルタイム化します。

6.1 ポーリング

ポーリングはリアルタイムWebアプリケーションを実装するための最もシンプルな手段です。クライアントはユーザー操作をトリガーとしないWeb APIの呼び出しを一定間隔で繰り返し、定期的に状態をサーバと同期します(図6-1)。

図6-1 ポーリング

サーバサイドでは特別な実装は必要なく、たとえば「5章 ...

Get ハンズオンNode.js now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.