Re: [問題] JSP自動Refresh的方法

看板java作者 (痞子軍團團長)時間11年前 (2013/12/05 02:33), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串2/2 (看更多)
推文說得差不多了,我只是整理一下 ※ 引述《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
單一SERVER~socket也不能開太多阿~
12/05 09:45, 1F

12/05 10:00, , 2F
老實說~異動紀錄可放在SERVER記憶體也可以阿
12/05 10:00, 2F

12/05 10:22, , 3F
atmosphere 可解。http://async-io.org/
12/05 10:22, 3F

12/05 12:05, , 4F
非常感謝!
12/05 12:05, 4F

12/05 16:29, , 5F
swpoker 多少算太多? 10k都能了 難道你客戶不只這數?
12/05 16:29, 5F

12/06 10:42, , 6F
說的也是~應該不用擔心這種事
12/06 10:42, 6F
文章代碼(AID): #1IdtLdPD (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1IdtLdPD (java)