电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网络编程 -> ASP.NET教程
用asp.net创建基于ajax的聊天室程序_asp.net实例
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 

原作者Dahan Abdo
译自CodeProject

如要下载源代码,请到原文地址: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 ) ));
      }
}

程序运行界面

开始页面显示一些有关当前session的基本信息,比如user number、聊天记录的大小等。用户必须提供用户名才能进入聊天室。点击Login button进入下面的函数:

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函数将用户加到user lists,然后就进入了聊天室页面chat.aspx,这时下面的JavaScript函数就会被执行:

<script type="text/javascript">
      sniffBrowserType();
      //Shows loading.. screen
      showLoadScreen();
      //Set the javascript timer and
      //loads user list and messages
      setTimers();
      setFocus(mytext);
</script>
当用户键入一些信息并回车时,就会调用下面的函数:

<input type="text" class="mytext"
       id="mytext" onkeydown="captureReturn(event)">

// Capture the enter key on the input box and post message
function 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 first
      chatbox = getElement( "mytext" );
      chat = chatbox.value;
      chatbox.value = "";
     
      //get user GUID from url
      userid = location.search.substring( 1, location.search.length );
     
      //construct Ajax Server URL
      url = Server.aspx?action=PostMsg&u= + userid + &t= +
             encodeURIComponent(chat) + &session= + rnd;
     
      //Create and set the instance
      //of appropriate XMLHTTP Request      object
      req = getAjax();
     
      //Update page with new message
      req.onreadystatechange = function(){
     
            if( req.readyState == 4 && req.status == 200 ) {
                  updateAll();
            }
      }
     
      req.open( GET, url, true );
      req.send( null );
}
就这么多,没什么特别的,你可以看源代码,里面有很多注释信息。

结 论

要用Java Applet建一个chat room需要在用户的机器上安装JVM。用ActiveX control存在一些安全问题。而用刚才介绍的AJAX,你却可以轻而易举的创建一个基于HTTP并不需要用户安装任何软件就可以运行的聊天室程序,并且很容易维护。
http://www.cnblogs.com/michaelxu/archive/2006/12/19/596872.html


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·让asp.net简便使用script_asp.net技巧
·asp.net atlas对javascript的扩展_asp.net技巧
·asp.net服务器控件编程之热身运动_asp.net技巧
·.net下生产图片验证码_asp.net技巧
·.net分页控件发布_asp.net技巧
·如何在搜索结果出来之前,让页面显示“等待中...” _asp.net技巧
·sharpwebmail介绍和安装_asp.net技巧
·photoshop黑人照片肤色漂白变白人_photoshop教程
·做完一个小网站的一点经验总结(2): asp.net+access程序运行环境的配置_asp.net实例
·将web站点下的绝对路径转换为虚拟路径_asp.net技巧

最新文章
·对.net framework 反射的反思_asp.net技巧
·.net3.5和vs2008中的asp.net ajax_asp.net技巧
·使用asp.net ajax框架扩展html map控件_asp.net技巧
·asp.net应用程序资源访问安全模型_asp.net技巧
·photoshop初学者轻松绘制螺旋漩涡特效_photoshop教程
·photoshop通道结合图层模式抠狗尾巴草_photoshop教程
·web.config详解+asp.net优化_asp.net技巧
·asp.net中多彩下拉框的实现_asp.net技巧
·asp.net中数据校验部分的封装与应用_asp.net技巧
·asp.net网络编程中常用到的27个函数集_asp.net基础


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号