制作一個(gè)具有私聊功能的聊天室
例6.10 在聊天室中,幾個(gè)網(wǎng)友一起聊天時(shí),總會(huì)有一些話題不想被同一聊天室內(nèi)別的聊友看見,因此聊天室必須設(shè)置私聊的功能,如圖6.12所示。
![]() |
(點(diǎn)擊查看大圖)圖6.12 具有私聊功能聊天室 |
在6.3.4節(jié)中已經(jīng)制作了一個(gè)簡(jiǎn)單的聊天室,在此基礎(chǔ)上設(shè)計(jì)一個(gè)具有私聊功能的聊天室。程序?qū)崿F(xiàn)的主要步驟:(實(shí)例位置:光盤\TM\Instances\06\ch10)
(1)在顯示聊天信息頁(yè)Bottom.aspx中,再添加一個(gè)TextBox控件,用來(lái)顯示私聊信息;在Default.aspx中,再添加一個(gè)CheckBox控件,用來(lái)區(qū)分聊天信息為私聊還是群聊。
(2)主要程序代碼如下。
為了實(shí)現(xiàn)私聊功能,需要修改Global.axax文件,在文件中加入如下代碼。
- void Application_Start(object sender, EventArgs e)
- {
- //在應(yīng)用程序啟動(dòng)時(shí)運(yùn)行的代碼
- //建立用戶列表
- string user="";//用戶列表
- Application["user"] = user;
- Application["userNum"] = 0;
- string chats = "";//聊天記錄
- Application["chats"] = chats;
- //當(dāng)前的聊天記錄數(shù)
- Application["current"] = 0;
- string receive = "";//接受列表
- Application["receive"] = receive;
- string Owner = "";//發(fā)送列表
- Application["Owner"] = Owner;
- string chat = "";//私聊內(nèi)容列表
- Application["chat"] = chat;
- Application["chatnum"] = 0; //私聊內(nèi)容的當(dāng)前記錄數(shù)
- string chattime = "";//私聊信息發(fā)送時(shí)間
- Application["chattime"] = chattime;
- }
(3)進(jìn)入添加聊天信息頁(yè)面Bottom.aspx,當(dāng)用戶輸入聊天信息并選中"私聊"復(fù)選框后,單擊"我要發(fā)言"按鈕,在"我要發(fā)言"按鈕的Click事件下將發(fā)送者、接收者、發(fā)送時(shí)間、聊天內(nèi)容這4項(xiàng)信息保存在Application對(duì)象中,其代碼如下。
- protected void Button1_Click(object sender, EventArgs e)
- {
- Application.Lock( );
- string strTxt = TextBox2.Text.ToString( );
- int intintChatNum = int.Parse(Application["chatnum"].ToString ( ));
- if (CheckBox1.Checked)
- {
- //處理私聊內(nèi)容
- if (intChatNum == 0 || intChatNum > 40)
- {
- intChatNum = 0;
- Application["chat"] = strTxt.ToString( );
- Application["Owner"] = Session["user"];
- Application["chattime"] = DateTime.Now;
- Application["receive"] = DropDownList1.
SelectedValue.ToString( );- }
- else
- {
- Application["chat"] = Application["chat"]
+ "," + strTxt.ToString( );- Application["Owner"] = Application["Owner"]
+ "," + Session["user"];- Application["chattime"] = Application
["chattime"] + "," + DateTime.Now;- Application["receive"] = Application
["receive"] + "," + DropDownList1.SelectedValue.ToString( );- }
- intChatNum += 1;
- object obj = intChatNum;
- Application["chatnum"] = obj;
- }
- else
- {
- //處理公共聊天內(nèi)容
- int intintcurrent = int.Parse(Application
["current"].ToString( ));- if (intcurrent == 0 || intcurrent >40)
- {
- intcurrent = 0;
- Application["chats"] =Session["user"].
ToString( ) + "對(duì)" + DropDownList1.SelectedValue.ToString
( ) + "說(shuō):" + strTxt.T oString( )+"("+ DateTime.Now.ToString( )+")" ;- }
- else
- {
- Application["chats"] = Application["chats"].
ToString( ) + "," + Session["user"].ToString( ) + "對(duì)" +
DropDownList 1.SelectedValue.ToString( ) + "說(shuō):" +
strTxt.ToString( ) + "(" + DateTime.Now.ToString( ) + ")";- }
- intcurrent +=1;
- object obj = intcurrent;
- Application["current"] = obj;
- }
- Application.UnLock( );
- //刷新聊天頁(yè)面
- Response.Write("<script language=javascript>");
- Response.Write("this.parent.right.location.reload( )");
- Response.Write("</script>");
- }
(4)進(jìn)入顯示聊天信息頁(yè)面right.aspx,當(dāng)頁(yè)面加載時(shí),從Application對(duì)象中讀取保存聊天信息,將所有的聊天記錄顯示在頁(yè)面中,代碼如下。
- protected void Page_Load(object sender, EventArgs e)
- {
- Application.Lock( );
- string OwnerName=Session["user"].ToString( );
- if (!IsPostBack)
- {
- //私聊、發(fā)送、接收
- string Owner = Application["Owner"].ToString( );
- string[] Ownsers = Owner.Split(',');
- string receive = Application["receive"].ToString( );
- string[] receivereceives = receive.Split(',');
- string chat=Application["chat"].ToString( );
- string [] chatchats=chat.Split(',');
- string chattime=Application["chattime"].ToString( );
- string[] chattimechattimes=chattime.Split(',');
- for (int i = (Ownsers.Length - 1); i>=0 ; i--)
- {
- if (OwnerName.Trim( ) == Ownsers[i].Trim( ))
- {
- //發(fā)送
- TextBox2TextBox2.Text = TextBox2.Text + "\n"
+ "您悄悄地對(duì)" + receives[i].ToString( ) + "說(shuō):" + chats[i].
ToString( ) + "("+chattimes[i].ToString( )+")";- }
- else
- {
- if (OwnerName.Trim( ) == receives[i].Trim( ))
- {
- //接收
- TextBox2TextBox2.Text = TextBox2.Text +
"\n" + Ownsers[i].ToString( ) + "悄悄地對(duì)您說(shuō):" + chats[i].
ToString( ) + "(" + chattimes[i].ToString( ) + ")";- }
- }
- }
- //公聊
- int intintcurrent = int.Parse(Application
["current"].ToString( ));- string strchat = Application["chats"].ToString( );
- string[] strchatstrchats = strchat.Split(',');
- for (int i = (strchats.Length - 1); i >= 0; i--)
- {
- if (intcurrent == 0)
- {
- TextBox1.Text =strchats[i].ToString( );
- }
- else
- {
- TextBox1TextBox1.Text = TextBox1.Text +
"\n" + strchats[i].ToString( );- }
- }
- }
- Application.UnLock( );
- }
聯(lián)系客服