這個程式是修改自我2004.12.22所寫的
0.0.1版,修正了一些Bug及使用者介面。大體上來說功能還是一樣。
License: 本版採用
Apache License Version 2授權,個人或商業均可免費使用。
開發環境:Tomcat 5.5.x + JDK 5.0(用到了Generic Collection及Concurrent)
安裝方式:將下載後的onlinemsg.war上傳到Tomcat/webapp下,如果Tomcat沒有自動解壓縮,請自行手動解開即可
解開後的程式目錄結構大致如下
onlinemsg
........./icq
........./.../message.au
........./.../online.wav
........./.../send.wav
........./msn
........./.../type.wma
........./.../online.wav
........./.../send.wav
........./WEB-INF
........./......./classes
........./......./......./com
........./......./......./.../andowson
........./......./......./.../......../onlineuser
........./......./......./.../......../........../UserList.class
........./......./......./.../......../........../UserMessage.class
........./......./......./.../......../........../UserMessageQueue.class
........./......./......./.../......../........../UserTrace.class
........./......./......./.../......../........../UserTraceFilter.class
........./......./......./.../......../........../UserTraceListener.class
........./......./lib/cos.jar
........./......./web.xml
........./errorpage.jsp
........./index.jsp
........./proc_sendmsg.jsp
........./sendmsg.jsp
........./sendok.html
........./showmsg.jsp
........./userlist.jsp
........./util.js
主要的邏輯如下:
index.jsp,用來處理登入
userlist.jsp,記錄登入的使用者代號並記錄到session去
sendmsg.jsp,傳送水球編輯畫面
proc_sendmsg.jsp,將水球內容寫到session去
sendok.html,顯示水球傳送完成畫面
showmsg.jsp,顯示收到的水球內容
errorpage.jsp,錯誤訊息頁
util.js,開啟視窗的JavaScript
UserList,用來記錄所有線上使用者的singleton的類別
UserTrace,用來追蹤單一使用者狀態的類別
UserMessage,水球內容
UserMessageQueue,用來記錄所有線上使用者的訊息佇列的singleton類別,每個使用者都有一個MessageQueue
UserTraceFilter,第一次進來的session的Filter
UserTraceListener,對session attribute有無異動的Listener
每個使用者的UserTrace是以sessionID當作key記錄到一個Map去
每個使用者的MessageQueue是以sessionID當作key記錄到一個Map去
當UserA對UserB發出水球時,先將水球設定到msg這個session屬性去,透過UserTraceListener去將該水球寫入到UserB專屬的MessageQueue。
當UserB的userlist.jsp每隔10秒refresh檢查到有屬於他的水球時,便啟動showmsg.jsp來顯示水球內容,並將該水球設為已讀過。
UserTraceListener將已讀過的水球由UserB的Queue中移出以避免重複顯示。
有關聲音檔方面,目前sendok.html和showmsg.jsp均有配音,用的是msn目錄下的send.wav和type.wma,如果想換成icq版可自行修改這兩個檔案中有關聲音檔的來源路徑即可。