Re: [問題] JSP自動Refresh的方法
推文說得差不多了,我只是整理一下
※ 引述《fonz (寂寞的等待)》之銘言:
: 先說一下小弟的情境與目標:
: 目前架了一個基本的Web Server,假設有A, B, C...不同台電腦
: 在同一時間都在瀏覽Server中的同一個頁面
: 假設目前畫面上有5筆資料,不論是哪一台電腦做了新增修改刪除功能
: 或是由其他程式去更動了資料。 希望所有正在看這個頁面的電腦都能夠
: 自動重新Refresh,執行查詢的功能。
: 要求是需要很即時的刷新頁面。
: 先說小弟的目前的做法:
: (1) 有一個方法是設定很短時間內,不斷的讓頁面去執行query。
: 不過因為期望大概最少每5秒就可以檢查一次,效率不是很好,這樣只要稍微
: 觀看的人變多,就算沒有資料沒有變化,還是會讓資料庫一直在做查詢。
: (2) 這是目前的做法,埋一支socket applet在頁面裡面,
: 在使用者連入頁面的時候,先去Server中某個紀錄檔留下自己的ip,
: 當有資料更新的時候,再觸發Server 的socket server程式,通知埋在頁面中的
: applet執行查詢動作。
: 這樣做現在有兩個問題點。
: [1] 使用者端的防火牆沒開,我一直在研究,很容易會造成整個架構出問題>"<
: [2] 在java 到1.7版之後,整個架構就不能run了。google查了一下,是applet
: 的安全性問題,現在只能要求先壓在1.6以下...
你的 1 是古老解,據說還有延伸出用 frame 作的進階招術
這樣畫面才不會閃爍
後來有了 AJAX 之後可以省去 http header 的 overhead
但是對寫 JSP 的人而言,說不定還覺得更麻煩
(那就寫 GWT 吧 XD)
你的 2,大抵上沒辦法實戰使用
最慘的問題就在於... 如果沒記錯的話 socket 的 applet 要 sign 過
在這之前還要確保有裝 JRE...
你可能很有恆心,但是廣~~大的使用者並沒有 XD
但是這年頭,你的 2 有了替代品,就是 websocket
就實質動作來說,跟你要的 2 幾乎一模一樣
底層其實也是開 socket,只不過是 browser 恩准然後幫你開 XD
server side,之前版上也有文章 #1IRvALN4 提了一下
已經變成 JSR,所以 Tomcat 7.? 後都會內建
client side 就... 請出門左轉 Ajax 版或是改用 GWT [喂喂]
插花外提,我前陣子思考了一下 websocket 跟 GWT RPC 的整合方式
後來想想,還是讓 websocket 當 trigger 就好
也就是 server 要丟東西到 client,就從 websocket 丟個 signal
實際傳輸資料還是用 GWT RPC...... 省時又方便 XD
在 websocket 出來之前,還有一個很美妙(也可以說詭異)的解法
叫做 comet http://en.wikipedia.org/wiki/Comet_(programming)
long polling 是 comet 的其中一個解法
不過還好我沒跟上那個年代 [誤] 就跳到 websocket 了 XD
所以這部份就跳過
你也可以參考一下這篇,然後只看中文跟 JavaScript 的部份就好 XD
http://josephj.com/entry.php?id=358
--
錢鍾書: 說出來的話
http://www.psmonkey.org
比不上不說出來的話
Java 版 cookcomic 版
只影射著說不出來的話
and more......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.234.218
→
12/05 09:45, , 1F
12/05 09:45, 1F
→
12/05 10:00, , 2F
12/05 10:00, 2F
推
12/05 10:22, , 3F
12/05 10:22, 3F
推
12/05 12:05, , 4F
12/05 12:05, 4F
推
12/05 16:29, , 5F
12/05 16:29, 5F
→
12/06 10:42, , 6F
12/06 10:42, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章