介紹
我的第一個簡單的Chat room 是用ASP 3.0 寫成的。那無外乎有二個TextBox,他們發送 訊息給程式變數然後顯示在一個每秒重新整理的頁面上。在那個時代,一個真正的聊天室必須運 用Java Applet或ActiveX control。不過這一切都在AJAX到來之後改變了。AJAX是一個結合 了XML 和 JavaScript的非同步通訊機制。現在我們可以只用伺服器代碼和一點JavaScript 。 這篇文章就是介紹如何用AJAX技術來構建一個簡單的聊天室。
樣本程式
樣本程式是一個單一的多使用者聊天室。其內部維護著一個已登入使用者的列表。列表將祛 除session到期的使用者。同時它還支援一些命令比如 /admin Clear 清除聊天室 /nick [Name] 改變使用者姓名。
你還需要知道
這個程式使用一個類叫做 ChatEngine 。 這個類控制了全部的使用者和訊息。使用者被儲存 在一個Hashtable 裡,而訊息儲存在 StringCollection 裡:
Hashtable users;StringCollection chat;
一個 ChatEngine 的全域執行個體被放置在 Global.asax.cs :
public static UChat.ChatEngine.IChatEngine Engine =new UChat.ChatEngine.ChatEngine();
一個JavaScript 函數用來非同步將全域變數內的資料顯示在頁面上:
function setTimers(){timeID = window.setTimeout( "updateAll()", refreshRate );}
利用每個使用者提供的名稱和ID來標識使用者:
public void AddUser(string id, string user){//make sure user name does not exist alreadyif( !UserExists( user ) ){//add user to users listusers.Add( id, user );//display a notification message to all users chat.Add( this.MakeServerMessage(string.Format(joinedfmt, user ) ));}}