linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > asp.net >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·NetBPM工作流的一个示例:请假
·Office Web Components(OWC)绘
·asp.net正则表达式语法
·asp.net 2.0 ajax中使用PopupC
·Ado.Net读取Excel常见问题总结
·数据源为空时如何让GridView显
·如何让UpdatePanel支持文件上传
·C#.Net的常见面试试题和参考答
·asp.net ajax客户端编程+jquer
·Brettle.Web.NeatUpload.dll支
·ASP.NET使用Cookie
·ASP.NET DEMO 15: 同时支持行单
·如何使IE的后退按钮无效
·如何在ASP.NET中用OWC绘制图表
·asp.net:正确判断当前用户角色
最新文章
·Ajax Control Toolkit Animati
·讨论一下类似BlogEngine内一次
·使用CSS+SiteMap+UserControl+
·Asp.net中多彩下拉框的实现
·浅谈ASP.NET的Postback
·分清ASP.NET AJAX中的Extender
·Tip:在使用AjaxControlTookit
·有关注册DataItem的一些可能被
·IIRF(Ionic's Isapi Rewrite
·asp.net 客户端回调功能的实现
·关于控件部分的看法--读Progra
·为什么在vista上做开发
·如何封装JS和CSS文件为服务器端
·岂今我看过的最强的排序算法
·设计模式学习笔记之单件模式
Google
 
利用AJAX和ASP.NET实现简单聊天室
[ 作者:  加入时间:2007-11-12 16:39:55  来自:Linux联盟收集整理 ]
介绍 N8GLinux联盟
   N8GLinux联盟
  我的第一个简单的Chat room 是用ASP 3.0 写成的。那无外乎有二个TextBox,他们发送消息给程序变量然后显示在一个每秒刷新的页面上。在那个时代,一个真正的聊天室必须运用Java Applet或ActiveX control。不过这一切都在AJAX到来之后改变了。AJAX是一个结合了XML 和 JavaScript的异步通信机制。现在我们可以只用服务器代码和一点JavaScript 。这篇文章就是介绍如何用AJAX技术来构建一个简单的聊天室。 N8GLinux联盟
   N8GLinux联盟
  示例程序 N8GLinux联盟
   N8GLinux联盟
  示例程序是一个单一的多用户聊天室。其内部维护着一个已登录用户的列表。列表将祛除session过期的用户。同时它还支持一些命令比如 /admin Clear 清除聊天室 /nick [Name] 改变用户姓名。 N8GLinux联盟
   N8GLinux联盟
  你还需要知道 N8GLinux联盟
   N8GLinux联盟
  这个程序使用一个类叫做 ChatEngine 。 这个类控制了全部的用户和消息。用户被储存在一个Hashtable 里,而消息储存在 StringCollection 里: N8GLinux联盟
   N8GLinux联盟
  Hashtable users;StringCollection chat; N8GLinux联盟
  一个 ChatEngine 的全局实例被放置在 Global.asax.cs : N8GLinux联盟
   N8GLinux联盟
  public static UChat.ChatEngine.IChatEngine Engine =new UChat.ChatEngine.ChatEngine(); N8GLinux联盟
  一个JavaScript 函数用来异步的将全局变量内的数据显示在页面上: N8GLinux联盟
   N8GLinux联盟
  function setTimers(){timeID = window.setTimeout( "updateAll()", refreshRate );} N8GLinux联盟
  利用每个用户提供的名称和ID来标识用户: N8GLinux联盟
   N8GLinux联盟
  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 ) ));}} N8GLinux联盟
  截图和实现步骤 N8GLinux联盟
   N8GLinux联盟
   N8GLinux联盟
   N8GLinux联盟
  主页显示了聊天室的基本信息,比如有多少人在聊天室、ChatLog的大小。 N8GLinux联盟
  为了能够登录聊天室,必须提供一个名称。 N8GLinux联盟
   N8GLinux联盟
  当 Login 按钮被单击。下面的代码就会被执行: N8GLinux联盟
   N8GLinux联盟
  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 );} N8GLinux联盟
  进行一些验证以后,用户会被转向到另一个页面,这个页面会利用 AddUser 函数将用户放入用户列表。当这一切都做好了。用户又会被转向到 Chat.aspx 页面,下面的 JavaScript 函数将要执行在这个页面上: N8GLinux联盟
   N8GLinux联盟
  <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" onkeydown="captureReturn(event)"> N8GLinux联盟
  当用户输入了文字,并且按了回车。下面的代码就会被执行: N8GLinux联盟
   N8GLinux联盟
  // 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 );} N8GLinux联盟
  完工!就是这些了。没什么特别的地方,下载示例程序,然后理解这些代码! N8GLinux联盟
   N8GLinux联盟
   N8GLinux联盟
  原作者 Dahan Abdo N8GLinux联盟
  翻译 yueue N8GLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息