|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。 先容
我的第一个复杂的Chatroom是用ASP3.0写成的。那无外乎有二个TextBox,他们发送动静给程序变量然后显现在一个每秒革新的页面上。在谁人时期,一个真实的谈天室必需使用JavaApplet或ActiveXcontrol。不外这统统都在Ajax到来以后改动了。AJAX是一个分离了XML和javascript的异步通讯机制。如今我们能够只用服务器代码和一点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){//makesureusernamedoesnotexistalreadyif(!UserExists(user)){//addusertouserslistusers.Add(id,user);//displayanotificationmessagetoalluserschat.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函数将要实行在这个页面上:
<scripttype="text/javascript">sniffBrowserType();//Showsloading..screenshowLoadScreen();//Setthejavascripttimerand//loadsuserlistandmessagessetTimers();setFocus(mytext);</script><inputtype="text"class="mytext"id="mytext">
当用户输出了笔墨,而且按了回车。上面的代码就会被实行:
//CapturetheenterkeyontheinputboxandpostmessagefunctioncaptureReturn(event){if(event.which||event.keyCode){if((event.which==13)||(event.keyCode==13)){postText();returnfalse;}else{returntrue;}}}functionpostText(){rnd++;//Cleartextboxfirstchatbox=getElement("mytext");chat=chatbox.value;chatbox.value=""//getuserGUIDfromurluserid=location.search.substring(1,location.search.length);//constructAjaxServerURLurl=Server.aspx?action=PostMsg&u=+userid+&t=+encodeURIComponent(chat)+&session=+rnd;//Createandsettheinstance//ofappropriateXMLHTTPRequestobjectreq=getAjax();//Updatepagewithnewmessagereq.onreadystatechange=function(){if(req.readyState==4&&req.status==200){updateAll();}}req.open(GET,url,true);req.send(null);}
竣工!就是这些了。没甚么出格的中央,下载示例程序,然后了解这些代码!
如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。 |
|