• 沒有找到結果。

伺服器端主動呼叫客戶端瀏覽器所採用之技術

3. 通用性資訊系統研究內容與方法

3.2 方法說明

3.2.3 伺服器端主動呼叫客戶端瀏覽器所採用之技術

當地理資訊客戶端(GIS Client)需發送事件到資料庫客戶端(DB Client)時,

卻受限於傳統桌面程式無法直接發送事件到 WEB 客戶端瀏覽器。在目前 WEB 應用系統下,地理資訊客戶端程式可透過 TCP/IP 協定與 WEB 伺服 器端程式(如 Servlet)相互傳送訊息,但 WEB 伺服器端該如何將該訊息 轉送到相對應的資料庫客戶端瀏覽器內呢?

目前伺服器端主動通知客戶端瀏覽器(Server-side notification to browser-client)可採用的技術有:Java applets 與 RMI (Remote Method Invocation)、

CORBA 或配置一些其他公司開發的 TCP/IP messaging 元件,皆可達成目 的。但這些技術都有開發困難、維護繁雜、瀏覽器相容性及防火牆管制等 問題。

在此本系統採用 PUSHLET 機制解決上述問題。PUSHLET 機制主要採用 Java Servlet 開發而成,配合前端瀏覽器 JavaScript 及 HTTP Streaming 技術,

WEB 伺服器可透過 PUSHLET Servlet 主動發出訊息到前端資料庫終端瀏覽 器內。

PUSHLET 的作業原理與在瀏覽器內觀看多媒體影片的運作模式相類似,都 是採用 HTTP 串流(HTTP Streaming)技巧。換言之,一般 HTTP 連結方式是 瀏覽器取得 HTML 文件後隨即關閉連結;但就 HTTP Streaming 而言,將 HTTP 保持連結並隨時等待新的串流資訊從伺服器端送達客戶端瀏覽器 內。也就是利用這種技巧,WEB 系統如採用 PUSHLET 機制,WEB 伺服器 可發送事件到特定的客戶端瀏覽器。[14]

主要運作流程如下:

1. 客戶端瀏覽器向 WEB 伺服器訂閱(subscribe)想要收到的事件(Event)類 別。並使用 HTTP 串流技巧與伺服器建立一個永久的 HTTP 連結。

2. WEB 伺服器保存所有客戶端瀏覽器相關資訊,如 IP 地址及訂閱事件 等。

3. 當 WEB 伺服器端有新事件產生時,WEB 伺服器內的 Java Servlet 將查 閱所有曾訂閱該事件的客戶端,並逐一送出事件到訂閱的客戶端瀏覽 器。

4. 訂閱事件將以 JavaScript 的型態送達客戶端,瀏覽器是透過 “執行” 送 達的 JavaScript 事件,搭配 DOM(Document Ojbect Model)更新 HTML 頁面。

客戶端訂閱事件流程(Event Subscription Scenario)

Browser Client User open a JSP web page

containing a hyperlink to subscribe topic

to WEB Pushlet Servlet,向 WEB 伺服器訂閱註冊。

2. 因為 Pushlet 可能同時收到許多不同客戶端的註冊請求,每收到一項請 求時,它將個別建立一個新的 PushletSubscriber Servlet 來處理不同的 客戶端。

3. PushletSubscriber 將持續執行直到 eventLoop 結束為止。

4. 在 eventLoop 程序內,PushletSubscriber 將要求 Publisher Servlet 建立一 項事件類別,並加入(join)該事件類別。

5. 最後在 eventLoop 程序內,設計一迴路反覆執行 deQueue 程序。當 Queue 內 無 任 何 事 件 時 , PushletSubscriber 將 進 入 休 眠 狀 態 (Sleep state),待有新事件產生時,再恢復執行。此新事件產生後的流程如圖 11所示。

伺服器端發佈事件流程(Publish Events Scenario)

Browser Client Web page receives an event decoded

in JavaScript code.

1. 產生事件的程式(Event Generator)呼叫 Publisher Servlet 的 publish 程 序,發佈此項新事件。

2. Publisher 逐一檢查所有 PushletSubscriber Servlet,如符合其訂閱主題 (Subscribed Topic)時,將呼叫 send(Event) 送出該事件。該新事件將放 入 PushletSubscriber 的佇列中(enQueue)。

3. 之 前 deQueue() 進 入 休 眠 狀 態 的 程 序 將 被 喚 醒 , 並 將 該 事 件 以 JavaScript 的型態透過 HTTP Streaming 的方式送到客戶端瀏覽器內。

4. 客戶端瀏覽器收到 JavaScript 後,以執行該程式段的方式更新網頁內 容。

相關文件