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

我的第一个简单的Chatroom是用ASP3.0写成的。那无外乎有二个TextBox,他们发送消息

给程序变量然后显示在一个每秒刷新的页面上。在那个时代,一个真正的聊天室必须运用

Applet或ActiveXcontrol。不过这一切都在AJAX到来之后改变了。AJAX是一个结合了XML和

Script的异步通信机制。现在我们可以只用代码和一点JavaScript。这篇文章就是介绍如何

用AJAX技术来构建一个简单的聊天室。

示例程序

示例程序是一个单一的多用户聊天室。其内部维护着一个已登录用户的列表。列表将祛除

session过期的用户。同时它还支持一些命令比如/adminClear清除聊天室/nick[Name]改

变用户姓名。

你还需要知道

这个程序使用一个类叫做ChatEngine。这个类控制了全部的用户和消息。用户被储存在一

个Hashtable里,而消息储存在StringCollection里:

Hashtableusers;

StringCollectionchat;

一个ChatEngine的全局实例被放置在Global.asax.cs:

publicstaticUChat.ChatEngine.IChatEngineEngine=newUChat.ChatEngine.ChatEngine();

一个JavaScript函数用来异步的将全局变量内的数据显示在页面上:

functionsetTimers()

{

timeID=window.setTimeout("updateAll()",refreshRate);

}

利用每个用户提供的名称和ID来标识用户:

publicvoidAddUser(stringid,stringuser)

{

//makesureusernamedoesnotexistalready

if(!UserExists(user))

{

//addusertouserslist

users.Add(id,user);

//displayanotificationmessagetoallusers

chat.Add(this.MakeServerMessage(string.Format(

joinedfmt,user)));

}

}

截图和实现步骤

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

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

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

protectedvoidLogin(objectsender,EventArgse)

{

stringuser=txtUsername.Text;if(!ValidateNick(user))return;

if(Global.Engine.UserExists(user))

{

lblErrorMsg.Text="Auserwiththis"+

"namealreadyexists,tryagain."

return;

}

Response.Redirect("Server.aspx?action=Login&u="+user);

}

进行一些验证以后,用户会被转向到另一个页面,这个页面会利用AddUser函数将用户放

入用户列表。当这一切都做好了。用户又会被转向到Chat.aspx页面,下面的JavaScript函

数将要执行在这个页面上:

sniffBrowserType();

//Showsloading..screen

showLoadScreen();

//Setthejavascripttimerand

//loadsuserlistandmessages

setTimers();

setFocus('mytext');

id="mytext"οnkeydοwn="captureReturn(event)">

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

//Capturetheenterkeyontheinputboxandpostmessage

functioncaptureReturn(event)

{

if(event.which||event.keyCode)

{

if((event.which==13)||(event.keyCode==13))

{

postText();

returnfalse;

}

else{

returntrue;

}

}

}

functionpostText()

{

rnd++;

//Cleartextboxfirst

chatbox=getElement("mytext");

chat=chatbox.value;

chatbox.value=""

//getuserGUIDfromurl

userid=location.search.substring(1,location.search.length);

//constructAjaxServerURL

url='Server.aspx?action=PostMsg&u='+userid+'&t='+

encodeURIComponent(chat)+'&session='+rnd;

//Createandsettheinstance

//ofappropriateXMLHTTPRequestobject

req=getAjax();

//Updatepagewithnewmessage

req.onreadystatechange=function(){

if(req.readyState==4&&req.status==200){

updateAll();

}

}

req.open('GET',url,true);

req.send(null);

}

完工!

点击转贴链接查看更多相关>>

c聊天室系统asp ajax,利用AJAX和ASP.NET实现简单聊天室相关推荐

  1. 基于jquery的ajax聊天室系统,基于jQuery的Ajax聊天室应用毕业设计(含外文翻译)...

    基于jQuery的Ajax聊天室应用毕业设计(含外文翻译) 毕业设计(论文) I 基于基于 jQuery 的的 Ajax 聊天室应用聊天室应用 摘摘 要要 随着网络的逐渐普及,以及网络技术的不断发展, ...

  2. android socket 简易聊天室 java服务器_利用Socket制作一个简易的Android聊天室

    首先制作一个客户端,界面如下: 使用方法:启动后,首先在登录编辑框输入一个昵称,然后点击登录,上面灰色区域是聊天窗,其中会显示你的登录提示,显示其他人发的消息.在的登录成功后,可以在下面的发送编辑框内 ...

  3. .net前台ajax,asp.net利用Ajax和Jquery在前台向后台传参数并返回值

    1----------前台 首先需要 Jquer的包 下面是 $(function () { $('#txtUserName').blur(function () { var username = $ ...

  4. 从零开始,在阿里云,腾讯云centos8系统上,利用docker部署asp.net core项目的一次实践,总结

    第一部分:注意事项,前言 注意点:建议选择centos8系统,安装docker建议安装最新,详细见下文,非常重要 注意点:建议选择centos8系统,安装docker建议安装最新,详细见下文,非常重要 ...

  5. php聊天室的设计实现,基于PHP的Ajax聊天室系统的设计与实现

    第7卷 第20期 2007年10月167121819(2007)2025396204 科 学 技 术 与 工 程 Science Technol ogy and Engineering Vol .7 ...

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

    老话说的好:好记心不如烂笔头! 本着这原则,我把最近工作中遇到的jquery利用ajax调用web服务的各种数据类型做了一个总结! 本文章没有什么高难度技术,就是记录一下,汇总一下,以便以后需要时查看 ...

  7. 利用ajax作一实时日志系统查询模块,和感兴趣的同行交流一下!

    最近作一模块 ,实时查询日志系统. 其思路是:1:加载网页时,从数据库读x条记录,显示在页面中.2:设置刷新时间,动态的从数据库中读取记录,在客户端进行 局部刷新.由于是局部刷新,所以就用到了ajax ...

  8. Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度

    ====================================================== 注:本文源代码点此下载 ================================= ...

  9. .NET ASP.NET 中web窗体(.aspx)利用ajax实现局部刷新

    C#所有runat="server"的控件都会造成整个界面的刷新,如果想实现局部刷新,可以利用ajax.需要加入的控件有ScriptManager和UpdatePanel,可以实现 ...

最新文章

  1. MVC中实现多按钮提交(转)
  2. 埃隆·马斯克:比特币拥有着“极为出色”的结构,而纸质货币终将消失
  3. 解决问题:EnvironmentLocationNotFound: Not a conda environment: /anaconda3/envs/anaconda3
  4. Android教程-Java基础2 语法与关系运算
  5. 华为鸿蒙网络,这回真翻脸了?被谷歌“除名”,官宣鸿蒙手机版,华为:走着瞧...
  6. python3读取txt文件数字签名_hash文件-对文件进行数字签名
  7. UI素材|标签页 Tab实用案例,可临摹学习
  8. 1.1-nfs部署和优化-1
  9. 重启验证的三种形式及其解决方法
  10. spss数据统计分析工具IBM SPSS Statistics 26 for Mac安装教程
  11. 【C语言/C++】switch使用方法介绍
  12. MSP-FET-430UIF无法使用
  13. linux poodle漏洞,Claws Mail 3.11.0发布 修复了POODLE 漏洞
  14. 【图像Restoration】Learning Enriched Features for Real Image Restoration and Enhancement
  15. 一年中的第几天 哔哩哔哩2020校园招聘笔试题讲解
  16. 第六章 Linux实际操作——实用指令
  17. 机器学习之---CRF与MRF
  18. mmdeploy快速上手
  19. C++语言程序设计第五版 - 郑莉(第九章课后习题)
  20. C语言编程之用circle画圆形

热门文章

  1. 怎么运行php格式的文件
  2. 华为路由器:WLAN直连式三层组网实验
  3. 用vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
  4. buck电路闭环pi控制matlab图,BUCK电路闭环控制系统的MATLAB仿真
  5. 内存分析工具 MAT 详解
  6. 什么是浏览器的同源策略?
  7. XMCTF内部赛 part1
  8. 关于香港DHL与大陆DHL有什么不同?
  9. 【vn.py】源码解析之布林通道(BollChannel)策略
  10. JS图片360度全景预览插件