如要下載原始碼,請到原文地址: http://www.codeproject.com/Ajax/UChat.asp
簡介
我的第一個chat room 是用ASP 3.0寫的。 程式比較簡單,兩個text box, 用來處理頁面上每秒重新整理的資訊。那時候,要想建一個真正的chat room,要用 到Java Applet 或者 ActiveX control。基於HTTP的chart rooms都面臨著一些 跟我第一個chat room一樣的問題。這些問題包括頁面重新整理導致的螢幕閃爍現象 。但這個問題已經被AJAX解決了。AJAX是JavaScript和 XML非同步呼叫的結合。現在在server端用一些JavaScript代碼就可以實現一個真正的chat room了。這 篇文章不會介紹Ajax,並假設你已經對Ajax和ASP.NET的運用有一定瞭解。只是 介紹如何用Ajax技術來建立一個基本的chat room。
例 程
這是一個多使用者的單一chat room。可以實現基本的聊天功能,還支援一些命 令行如: /admin clear 用來清除聊天記錄,/nick [Name] 用來更改使用者暱稱 等。程式說明這個程式用一個ChatEngine類來處理所有的聊天資訊和使用者資訊, 使用者資訊儲存在一個Hashtable中,聊天資訊儲存在StringCollection中。
Hashtable users;
StringCollection chat;
在Global.asax.cs 中聲明一個全域的ChatEngine的執行個體,為chat room中所 有users共用:
public static UChat.ChatEngine.IChatEngine Engine = new UChat.ChatEngine.ChatEngine();
還有一個JavaScript timer函數用來同步全域變數和頁面資訊。
function setTimers()
{
timeID = window.setTimeout( "updateAll()", refreshRate );
}
每一個user都由一個username和一個GUID來唯一標識。
public void AddUser(string id, string user)
{
//make sure user name does not exist already
if( !UserExists( user ) )
{
//add user to users list
users.Add( id, user );
//display a notification message to all users
chat.Add( this.MakeServerMessage(string.Format(
joinedfmt, user ) ));
}
}
程式運行介面