トップ / ブログ / 検索結果

2015年はリアルタイムWEBな年。技術編その2

リアルタイムWEB、例えば病院のある診療科のWEBによる診察予約システム を考えてみましょう。この診療科では30分毎の時間枠に2人まで予約する ことができます。 予約する人は、予約登録画面(30分枠に2つのチェックボックスあり、 予約済は使用不可)で空いている時間枠のチェックボックスをオンにし、 登録ボタンを押下します。

予約登録画面を表示してから何時にしようかなと考え、チェックして 登録ボタンを押下したところ、既に予約されているというメッセージが 表示され、予約ができませんでした。 予約登録画面を表示してから登録ボタンを押下するまでに、他の人が その時間枠を予約してしまったのです。 予約された箇所は速やかに反映してほしいとの要望が多々あり、Ajaxを 使って数秒間隔でサーバから最新の予約状況を取得(リクエスト・レス ポンス)し、予約登録画面に反映しました。ところが、多数のクライア ントから数秒ごとにリクエストが発生するためサーバが悲鳴を上げてし まいました。さらに、クライアント側もリクエスト・レスポンスの多さに 動作が遅くなってしまいました。

WebSocketがこの問題を解決します。WebSocketはクライアントとサーバで 双方向の通信をすることができます。ある予約登録が確定したとき、サー バ側でこれを契機(イベント駆動型)に予約登録画面を表示しているクラ イアントに予約された時間枠データを送信します。クライアント側は非同期 でこのサーバからの時間枠データを受信し、予約登録画面に反映(この時間 枠の一つを使用不可にする)します。 WebSocketは、クライアントとサーバで確立したコネクションを使い続ける、 ヘッダデータがHTTPヘッダに比べてサイズが小さいく伝送効率が良い、など の特徴があります。

診察予約システムに更に改善要望が発生しました。スマートフォン対応、 ブラウザIE8、9の対応です。 スマートフォンは移動しながら使ったりでサーバとの接続が切れることがあり、 切れたら自動で再接続することが必要です。 IEはIE10からWebSocketに対応しており、IE9以下は対応していません。

そこで、Kaazing WebSocket Gatewayを紹介します。Kaazing WebSocket Gateway は切断時の自動再接続機能を簡単に実装でき(WebSocketでも自動再接続は行える がKaazingの方が簡単)、WebSocketに対応していないブラウザの場合にはKaazing がWebSocketをエミュレートする、などの機能を持っています。 Kaazing WebSocket Gatewayの各機能を次回以降、紹介していきます。

株式会社オークネット・アイビーエス 技術統括室 加藤

Author しげじい 2015/01/14 09:55