用Asp.Net建立基於Ajax的聊天室程式

來源:互聯網
上載者:User

如要下載原始碼,請到原文地址: 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 ) ));
    }
}

程式運行介面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.