利用AJAX和ASP.NET实现简单聊天室

  介绍

  我的第一个简单的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 ) ));}}

  截图和实现步骤

  主页显示了聊天室的基本信息,比如有多少人在聊天室、ChatLog的大小。

  为了能够登录聊天室,必须提供一个名称。

  当 Login 按钮被单击。下面的代码就会被执行:

  protected void Login( object sender, EventArgs e ){string user = txtUsername.Text;if( !ValidateNick( user ) ) return;if( Global.Engine.UserExists( user ) ){lblErrorMsg.Text = "A user with this " +"name already exists, try again."return;}Response.Redirect( "Server.aspx?action=Login&u=" + user );}

  进行一些验证以后,用户会被转向到另一个页面,这个页面会利用 AddUser 函数将用户放入用户列表。当这一切都做好了。用户又会被转向到 Chat.aspx 页面,下面的 JavaScript 函数将要执行在这个页面上:
 
<script type="text/javascript">sniffBrowserType();//Shows loading.. screenshowLoadScreen();//Set the javascript timer and //loads user list and messages setTimers();setFocus('mytext');</script><input type="text" class="mytext"id="mytext" >

  当用户输入了文字,并且按了回车。下面的代码就会被执行:

  // Capture the enter key on the input box and post messagefunction captureReturn( event ){if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)){postText();return false;}else {return true;}}}function postText(){rnd++;//Clear text box firstchatbox = getElement( "mytext" );chat = chatbox.value;chatbox.value = ""//get user GUID from urluserid = location.search.substring( 1, location.search.length );//construct Ajax Server URLurl = 'Server.aspx?action=PostMsg&u=' + userid + '&t=' +encodeURIComponent(chat) + '&session=' + rnd;//Create and set the instance //of appropriate XMLHTTP Request objectreq = getAjax();//Update page with new messagereq.onreadystatechange = function(){if( req.readyState == 4 && req.status == 200 ) {updateAll();}}req.open( 'GET', url, true );req.send( null );}

  完工!就是这些了。没什么特别的地方,下载示例程序,然后理解这些代码!

时间: 2024-11-01 17:34:58

利用AJAX和ASP.NET实现简单聊天室的相关文章

用ASP做个简单聊天室

聊天|聊天室 这次我为大家介绍的是我第一个用ASP做的程序----聊天室,很简单,没用数据库,但是对于还未学到ADO的同志是个比较好的参考例子,这个例子基本包括了所以ASP的五个内置对象,但是有了聊天室的雏形,如果水平到家可以在此基础上做的强大好看点好了,废话不说了,现在进入正题吧! 首先这个程序有四个部分组成,分别是index.asp,chat.asp,show.asp,input.asp首先调用chat.asp然后就可以运行了! 作为一个初学者,我觉得写一个程序整体观念很重要,也就是说你首先

Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇)

原文:Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇) 老话说的好:好记心不如烂笔头! 本着这原则,我把最近工作中遇到的jquery利用ajax调用web服务的各种数据类型做了一个总结! 本文章没有什么高难度技术,就是记录一下,汇总一下,以便以后需要时查看! 本总结牵涉的数据类型,主要有: string,int这样的基本数据类型 ClassA这样的自定义类 List<ClassA>这样的集合类型 Dictionary这样的字典类型数据 DataSet这样

asp简单聊天室程序 一

很多以前的聊天室程序哦,只用到两个文件哦.下我看第一个html文件吧. <html><head><title>asp简单聊天室程序</title> <style>*{font:9pt 宋体;line-height:1.7}</style> <script> var XmlDom = document.createElement("xml"); XmlDom.onreadystatechange=func

asp简单聊天室程序 二

asp简单聊天室程序 二 <%@Language="JavaScript" CodePage="936"%><% var Nothing; Response.addHeader("Cache-Control","no-cahce"); if(!Session.Contents("Chat_User")) {     Session.Contents("Chat_User"

用Agent+ASP技术制作语音聊天室

聊天室 用Agent+ASP技术制作语音聊天室--------------------以下为程序内容,按文章中出现的顺序分块排序 <!--定义"AgentControl"--><OBJECT classid=clsid:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F codeBase=#VERSION=2,0,0,0 id=Agent></OBJECT> <!--定义L&H TruVoice Text-To-S

JSP+servlet简单聊天室

问题描述 JSP+servlet简单聊天室 急求一份JSP+SERVLET的简单聊天室代码功能: 显示发言人的名字和内容 解决方案 我回去找找,记得之前老师发了一份jsp写的聊天室代码,然后让我用ssh框架重写一份,然后我就忘记... 解决方案二: ?index.jsp%@page import=""java.util.*""%> ArrayList al_say=new ArrayList(); //创建ArrayList数组www.itstudy.cn a

ASP.NET 使用application与session对象写的简单聊天室程序_实用技巧

ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览器端的变量对象,用来存储跨网页程序程序的变量或者对象.  说实话,写了快一年的asp.net,application对象还真没怎么用过.看了看书,根据这两个对象的特性写了一个简单的聊天室程序.真的是非常的简陋. 我的思路是,有两个页面Default页和ChatRoom页,页面布局如图: Defaul

asp.net mvc signalr简单聊天室制作过程分析_实用技巧

signalr的神奇.实用很早就知道,但一直都没有亲自去试用,仅停留在文章,看了几篇简单的介绍文字,感觉还是很简单易用的. 由于最后有个项目需要使用到它,所以就决定写个小程序测试一下,实践出真知:别人写的文章,由于环境(版本等)不同,还是或多或少存在一些出入的. 环境:vs2013 / asp.net mvc 5 / signalr 2.2.1 / jquery 1.10.2 先上两个效果图: 系统会自动给加入聊天室的人员分配一个ID,是该人员的唯一标识(绿色为当前用户说的话,橙色为当前用户之外

一个简单聊天室的建立.(供学习参考)

 经过一个阶段的asp学习,下面我们结合所学过的内容建立一个最简单的聊天室,虽然很简单,但是大家可以通过他来掌握一个聊天室建立的基本过程,并且可以不断的完善其功能.      下面介绍其主要步骤:       1,添加Global.asa文件里面的代码.这部分代码主要处理Application_onStart事件,在此事件中,定义了一个有15个元素的数据,并把它赋给了一个Application对象的属性.Global.asa文件的内容如下.<SCRIPT LANGUAGE="VBScrip