B/S結(jié)構(gòu)下如何實現(xiàn)socket通信
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
[p]請大家?guī)蛶兔Γ椰F(xiàn)在在做一個b/s的在線考試系統(tǒng),要求學(xué)生考試時監(jiān)考老師可以給學(xué)生發(fā)送消息。監(jiān)考老師和學(xué)生登陸的是同一個系統(tǒng)。頁面不同,如何實現(xiàn)。謝謝了。[/p]
[p] [/p] [p]哈哈,終于搞定了,最終用的方法拿出來跟大家分享一下:[br]首先把老師要發(fā)送的消息寫到服務(wù)器上的xml文件,之所以不寫到數(shù)據(jù)庫是因為數(shù)據(jù)庫每秒鐘被學(xué)生訪問會造成服務(wù)器卡死。xml文件就沒問。[br]public void loadxml()[br] {[br] doc.load(server.mappath("~/message.xml"));[br] }[br] protected void btn_radio_click(object sender, eventargs e)[br] {[br] loadxml();[br] xmlnode nodes = doc.selectsinglenode("http://question/content");[br] nodes.innertext = tbmessage.text;[br] doc.save(server.mappath("~/message.xml"));[br][br] }[br][br]學(xué)生獲取消息時要用javascrip每一秒鐘獲取一次xml里的content節(jié)點下的消息。用javascript就不會一直刷新,獲取完就彈出,彈出后要清空xml的content節(jié)點,就不會一直彈了。下一次老師有消息寫入的時候會再次彈。[br] function selectxml()[br] {[br] try //internet explorer[br] {[br] xmldoc=new activexobject("microsoft.xmldom");[br] }[br] catch(e)[br] {[br] try //firefox, mozilla, opera, etc.[br] {[br] xmldoc=document.implementation.createdocument("","",null);[br] }[br] catch(e) {alert(e.message)}[br] }[br]try [br] {[br] xmldoc.async=false;[br] xmldoc.load("/message.xml");[br] // document.write("xmldoc is loaded, ready for use");[br] x=xmldoc.getelementsbytagname("content");[br] if(x[0].childnodes[0].nodevalue!="")[br] { [br] alert(x[0].childnodes[0].nodevalue);[br] x[0].childnodes[0].nodevalue="";[br] }[br] }[br]catch(e) [br] {[br] [br] }[br]}[br][br] settimeout("selectxml()",1000)[br][br]哈哈,騰訊用那么長時間做的webqq一下就實現(xiàn)了。[/p] 該文章在 2010/5/1 0:06:52 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |