Simple chat application for ASP.NET

原创 2004年09月04日 18:42:00

Sample Image - SimpleChat.jpg

Introduction

And why not, how to create an easy chat room for your web site? Well, the best way is to use a nice database to store messages; however, for demo purposes, I'll use a static array. I know, you won't be able to use it in your web farm. Take this article as the concept, not as a solution. This simple web chat program is intended to work in any browser supporting <iFrame>.

Also, you can select multiple chat rooms. Why not extend from there and more from channel to channel.

Background

Some months ago, I was looking for a complete on-line customer service ASP.NET control to make my life easier, did not find anything interesting, so I built my own.

Using the code

Replace this class if you are using a database to save the messages:

public class Chat
{
        static protected ArrayList pArray = new ArrayList();
        

        static public void AddMessage(string sDealer, 
                              string sUser, string sMsg)
        {
            string sAddText = sDealer + "~" + sUser + "~" + sMsg;
            pArray.Add(sAddText);

            if ( pArray.Count > 200 )
            {
                pArray.RemoveRange(0,10);
            }
        }

        static public string GetAllMessages(string sDealer)
        {
            string sResponse = "";

            for (int i=0; i< pArray.Count; i++)
            {
                sResponse = sResponse + 
                    FormatChat(pArray[i].ToString(), sDealer);
            }

            return(sResponse);
        }

        static private string FormatChat(string sLine, string sDealer)
        {
            int iFirst = sLine.IndexOf("~");
            int iLast = sLine.LastIndexOf("~");

            string sDeal = sLine.Substring(0, iFirst);
            if ( sDeal != sDealer)
                return("");

            string sUser = sLine.Substring(iFirst+1, iLast-(iFirst+1));
            
            string sMsg = sLine.Substring(iLast+1);

            string sRet = "" + sUser + ": " + sMsg + "";

            return(sRet);
        }
    }

The above code reads and writes from the static array like in a database. The code only allows having 200 messages in the array, after that it deletes the top 10 at the time.

The Chat page is pretty simple; this is the code behind aspx.cs:

public class ChatWin : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.TextBox TB_ToSend;
        protected System.Web.UI.WebControls.Button BT_Send;
    
        private void Page_Load(object sender, System.EventArgs e)
        {
            if ( Page.IsPostBack == false )
            {
                if ( Request.Params["Channel"] != null )
                    Session["ChatChannel"] = 
                       Request.Params["Channel"].ToString();
                else
                    Session["ChatChannel"] = "1";
                
            }
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
        
        /// <SUMMARY>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </SUMMARY>
        private void InitializeComponent()
        {    
            this.BT_Send.Click += 
               new System.EventHandler(this.BT_Send_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        public string GetChatPage()
        {
            return("TheChatScreenWin.aspx");
        }

        private void BT_Send_Click(object sender, System.EventArgs e)
        {
            string sChannel = "";
            string sUser = "";

            if ( Request.Params["Channel"] != null )
                sChannel = Request.Params["Channel"].ToString();
            else
                sChannel = "1";

            if ( Request.Params["User"] != null )
                sUser = Request.Params["User"].ToString();
            else
            {
                Random pRan = new Random();
                int iNum = pRan.Next(9);
                sUser = "Annonymouse" + iNum;
            }

            
            if ( TB_ToSend.Text.Length > 0)
            {
                PageModule.Chat.AddMessage(sChannel,
                    sUser,
                    TB_ToSend.Text);
                
                TB_ToSend.Text = "";        
            }
        }
    }

When the SEND button is clicked, it calls the function AddMessage that adds a row into the end of the static array.

The page inside the <iframe> tag refreshes every 4 seconds without refreshing your actual page.

Points of Interest

The magic? None, a simple request of the second page into the <iFrame>. So, Internet Explorer takes care of everything for us to read the static array.

基于tcp/ip协议,使用socket进行简单的多用户聊天室

heardfirst里面有基于tcp/ip协议的socket聊天程序,这里做一下记录 SimpleChatClient客户端类public class SimpleChatClientA { ...
  • zp437734552
  • zp437734552
  • 2016年05月29日 18:01
  • 440

ASP.NET实现简单的聊天室,主要是Application对象

用ASP.NET做一个最简单的聊天室,逻辑清晰简单,能帮你了解Application的用法。 第一步我们先构想我们需要的页面,应该也就是两个吧,第一个登陆页面Login.aspx,第二个聊天室主页面...
  • u011955860
  • u011955860
  • 2013年12月27日 10:01
  • 2870

chat聊天室的架设(nodejs)

代码:http://download.csdn.net/detail/chuanyu/9392151 服务器环境:ubuntu14.04 root@cy-VirtualBox:~...
  • chuanyu
  • chuanyu
  • 2016年01月06日 10:44
  • 674

ASP.NET中利用Application和Session统计在线人数、历史访问量

通常在整个过程中,大多数人对Application_End()这个事件的疑问是最大的,因为如果您只是在VisualStudio上做的测试的话,关闭系统时,没有触发Application_End()事件...
  • huyuyang6688
  • huyuyang6688
  • 2014年09月25日 22:08
  • 3463

学习ASP.NET MVC5框架揭秘笔记-IIS/ASP.NET管道(三)

ASP.NET管道 以IIS6.0为例,它在工作进程w3wp.exe中会利用aspnet_isapi.dll加载.NET运行时(如果.NET运行时尚未加载)。IIS6.0引入了应用程序进程池的概念,一...
  • yejinwei1220
  • yejinwei1220
  • 2015年05月13日 10:47
  • 1190

ASP.NET中XML转JSON的方法

许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理。要实现这一点,它们必须将XML格式转换为JSON格式。     XML转JSON代码   pr...
  • whaxrl
  • whaxrl
  • 2014年02月20日 12:52
  • 796

ASP.NET中application对象的用法

本文导读:Application对象是HttpApplicationState类的一个实例,Application状态是整个应用程序全局的。Application对象在服务器内存中存储数量较少又独立于...
  • u014382470
  • u014382470
  • 2015年01月31日 23:17
  • 64

使用ASP.NET的Application对象实现在线人数统计的功能

注:最近在复习ASP.NET,为了加深印象,会制作一些小的demo程序,分享给大家。 1 新建ASP.NET网站,编辑Global.asax文件,修改后的文件内容如下所示。 ...
  • tiana0
  • tiana0
  • 2015年04月04日 11:14
  • 2594

VC中的stdafx.h简介(原理及作用)

简介: stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展)。 所谓头文件预编译,就是把一个工程(...
  • GVFDBDF
  • GVFDBDF
  • 2015年09月20日 15:30
  • 664

网站访问量的统计(Application和Session应用)

下面介绍如何进行ASP.NET中网站访问量的统计。 一、建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_...
  • u013605178
  • u013605178
  • 2014年05月03日 16:34
  • 1135
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Simple chat application for ASP.NET
举报原因:
原因补充:

(最多只允许输入30个字)