2012年4月15日 星期日

簡單的聊天室實作

聊天室
這個東西在即時通訊系統出現之前
非常流行
是掀起網路人際關係的濫觴
特色在於能立即收到回應
缺點是必須登入指定地點
所以ICQ出來之後,
立刻被打敗了
因為ICQ是裝在自己的電腦上
加上使用者的介面相對親切
並且更加方便
^^^^^^^^^^^^^^^^
只要留給別人即時通地址, 別人想聯絡你時就能聯絡你
不需要約時間在聊天室苦苦等候
做到真正的"即時"通~

最近心血來潮
用JSP想實作一個簡單的聊天室
沒想到越做越多
因為有幾點要考慮:
1.聊天內容存放處: 只是存放在application的一個變數. 吃的是記憶體空間. 所以AP SERVER重開或清掉變數內容的話, 記錄就沒了.
2.重新讀取問題: 若是用post方法, 每次重讀, 瀏覽器都會跳出視窗確認, 很麻煩又關不掉. 用get方法沒有跳出確認視窗問題, 但是之前聊天內容會一直重複增加, 原因是採用window.location.reload(), 導致重複送出帶參數的網址. 解決之道是利用window.location底下的屬性, 拼湊出不含變數的網址. 然後用window.open()取代window.reload()以指定url位址.
3.捲軸位址: 重新讀取畫面時, 捲軸會跑掉. 所以必須要能記得捲軸位址, 重新讀取時恢復上次捲軸位址. 這點用window.onscroll事件和document.body.scrollTop屬性完成.

以下是成品, 內含兩支JSP+1個HTML做窗格(FRAME)
http://goo.gl/QWriQ