B/S结构下如何实现socket通信
|
admin
2010年5月1日 0:6
本文热度 7316
|
请大家帮帮忙,我现在在做一个b/s的在线考试系统,要求学生考试时监考老师可以给学生发送消息。监考老师和学生登陆的是同一个系统。页面不同,如何实现。谢谢了。
哈哈,终于搞定了,最终用的方法拿出来跟大家分享一下:
首先把老师要发送的消息写到服务器上的xml文件,之所以不写到数据库是因为数据库每秒钟被学生访问会造成服务器卡死。xml文件就没问。
public void loadxml()
{
doc.load(server.mappath("~/message.xml"));
}
protected void btn_radio_click(object sender, eventargs e)
{
loadxml();
xmlnode nodes = doc.selectsinglenode("//question/content");
nodes.innertext = tbmessage.text;
doc.save(server.mappath("~/message.xml"));
}
学生获取消息时要用javascrip每一秒钟获取一次xml里的content节点下的消息。用javascript就不会一直刷新,获取完就弹出,弹出后要清空xml的content节点,就不会一直弹了。下一次老师有消息写入的时候会再次弹。
function selectxml()
{
try //internet explorer
{
xmldoc=new activexobject("microsoft.xmldom");
}
catch(e)
{
try //firefox, mozilla, opera, etc.
{
xmldoc=document.implementation.createdocument("","",null);
}
catch(e) {alert(e.message)}
}
try
{
xmldoc.async=false;
xmldoc.load("/message.xml");
// document.write("xmldoc is loaded, ready for use");
x=xmldoc.getelementsbytagname("content");
if(x[0].childnodes[0].nodevalue!="")
{
alert(x[0].childnodes[0].nodevalue);
x[0].childnodes[0].nodevalue="";
}
}
catch(e)
{
}
}
settimeout("selectxml()",1000)
哈哈,腾讯用那么长时间做的webqq一下就实现了。
该文章在 2010/5/1 0:06:52 编辑过