小纸条功能相关资料转贴

在网上找了资料

一           首先怎样做能把要传的纸条内容准确地传给要找的人,第二,纸条到达后怎样通知要找的人?能回答此问题的我认为定是高手。

可以试试这样       1.把对别人说的话先储存到一个临时的数据库(表)中,与接受方的id想对应       2.然后把页面设定为每隔一段时间自动刷新一次       3.检查那个表,如果相应的字段里不为空,则在网页上把其中的内容显示出来       这样回答满意吗?   有分拿吗?

        基于B/S结构的不可能实现像C/S那样的实时。 比较通常的做法是在客户端用脚本语言设置一个定时器,定时的查询服务端的消息。

       大家担心的性能问题,其实要看你后台是如何设计了。 目前的服务器性能都应该不成问题,而性能瓶颈往往出现在对数据库的查询上,查询语句复杂、语句条数多,这些都是造成大用户量访问时,服务器总体性能下降的原因。 针对楼主的问题,说的深奥一点就是可以用ajax来解决,说的简单一点就是一小段定时循环的javascript。 用这个js每分钟(自定义)从服务器请求该用户是否有新消息,有的话就接收消息。然后用js在页面某个地方显示一个会闪的gif,自动提示消息的功能就ok了。 主要是考虑后台如何查询这些信息。信息一般都存在数据库,这个没有疑问,但不能主动去数据库查询这些信息。在数据库中应该有一张专门放置要提示的信息的表,其他信息新增模块每次产生一条新信息,除了记录到信息模块的表中,还应该顺便记录到这张临时表中。 接着要有一个定时程序,可能每分钟一次,从临时表中读取所有数据(这样很快,一次性查出所有用户的信息),然后将这些数据写入服务器application上下文。 前台有一个服务类,用来和页面的ajax请求交互。这个类接受到用户的刷新请求,开始到application上下文中的信息列表中查找用户的信息。(不可否认:在内存列表中查找信息远比在数据库中用sql查找信息)如果找到就把信息通过xml->ajax返回给客户端。 当客户到查看信息页面中查看掉信息后,就删除临时表中的记录,一分钟后的同步动作应该自动将内存中的信息干掉了。

 

        功能描述:系统假如只有4个用户(A/B/C/D),均在线,当用户A:给B、D两人发了不同内容短信,此时系统会自动在B、D界面上弹出信息提示框(不借助页面刷新),不会发错给C,只要说出整个思路就行,有源码就更好


回复1: UP

回复2: 在客户端通过xmlHttp定时查询服务端时候有发给自己的短信,也就是AJAX。 相关的资料、例子网上很多,可以自己查阅。不难解决。

回复3: 数据库建一个表 id,发送用户,接受用户,消息内容,是否已读 当A给B,D发消息时就在这个表里插入数据,插入一人一条还是二人合用一条这个你自己决定 1 A B,C “测试” 0 0为未读 接收消息页面你想不用刷新就用AJAX做,当数据库这个表中有“是否已读”字段为0的且“接受用户”中有当前用户时就提示用户(用鲜明的颜色或声音或动画)有新消息,并提供链接点击进入读新消息,当用户进入读取新消息页面时把此消息的“是否已读”的字段改为1 搞定

回复4: 其实我的难点就是发给某个具体的人,不会提示错误(本来给A的,却提示给了B)

回复5: 按照上面说的思路不会出现这种情况,除非你选接收人的时候选错了

回复6: 我的思路是用timer+侦听器来实现,我能获取到那些新信息,就是在给用户发Response(包含弹出框)就不知道怎么搞了,

回复7: 给用户发response是B/S结构不能做到的,你在客户端的页面上通过js定时,定时通过xmlHttp对象请求后台的一个查询servlet,在这个servlet中通过xmlHttp所带的参数,然后去消息中心(比如数据库)查询是否有发送当前用户的消息,如果有,取出来通过dom对象返回给客户端(在客户端弹出或者其它的方式,js都能做到)。 而发送功能就是请求服务端的一个servlet,在这个servlet中得到发送的消息的所有信息,然后存入数据库,等着查询servlet来查询

我给楼主点建议,用AJAX轮询的时候,服务器压力过大,要求实时性的时候最好别采用.可以考虑,我们用HTTPXML的时候,会有一个触发操作,即读取READY状态,可不可以利用这一点,让消息发送者发了后服务器获得信息,然后检查会话,发给用户?

      http://www.cnblogs.com/gwazy/archive/2005/05/10/152205.html 我以前写的.用 webservice 实现无刷新动态从数据库取数据.... 上边是每5秒返回一次数据,不过 开发 中要是用户量大的话最好不要用 或间隔时间长点.  

也可以用XMLHTTP 客户端 CSTest.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Untitled Page</title> </head> <body> <input name="txt" type="text" size="50" maxlength="10" /> <script> function Func() { var o = new ActiveXObject("Microsoft.XMLHTTP"); o.open("POST","CSTest.aspx", false); o.send(); txt.value = o.responseText; } setInterval("Func()", 1000); //轮询时间间隔 </script> </body> </html> 服务器端:CSTest.aspx <% Response.Write(DateTime.Now.ToString()); %>  

 

因为 B/S 的系统里很难实现推模型,所以其实还是用传统的做法。 具体来说,就是你的页面有一个部分去定时循环调用 xmlhttp 读取后台的数据(消息表),如果有新的,则用声音,文字等等 提示 用户即可。 定时的功能可以用 js 里面的 window.setInteval 函数。 或者你用一个隐藏的 iframe 定时 postback 也可以

http://topic.csdn.net/t/20001014/15/34570.html

两种方案: 第一种,自己建立收发的服务器(不得不和传呼部门联系),然后,自己写程序,投资巨大! 第二种,使用网上广大的免费服务器,把消息提交给他们! 这又分两种方法: 第一种:直接在程序中放入HTML 文档,使用CHtmlView(也就是IWebBroswer2了 ), 内容如下(这个好使,你也可以选择其他的): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- saved from url=(0040)http://www1.wst.net.cn/sj/gsm/index.html --> <HTML><HEAD><TITLE>手机短消息网上发送</TITLE> <META content=zh-cn http-equiv=Content-Language> <META content="text/html; charset=gb2312" http-equiv=Content-Type> <META content="Microsoft FrontPage 4.0" name=GENERATOR> <META content=FrontPage.Editor.Document name=ProgId> <SCRIPT language=JavaScript> <!-- function checkdata(){ if(this.document.fm.PhoneID.value==""){ alert("请输入手机号码!"); return false; } else if(isNaN(this.document.fm.PhoneID.value)==true || this.document.fm.PhoneID.value.length!=11){ alert("请输入合法的手机号码!"); return false; } else if(this.document.fm.dtype[3].checked==true && this.document.fm.message.value==""){ alert("请输入一般短消息内容!"); return false; } else if(this.document.fm.dtype[2].checked==true){ alert("股票行情功能暂未开通!"); return false; } else if(this.document.fm.dtype[3].checked==false && this.document.fm.message.value!=""){ alert("短消息内容不应输入!"); return false; } else if(this.document.fm.ready[1].checked==true && ( this.document.fm.yy.value=="" || this.document.fm.mm.value=="" || this.document.fm.dd.value=="" || this.document.fm.hh.value=="" || this.document.fm.ff.value=="" || this.document.fm.ss.value=="")){ alert("请输入发送的具体时间!"); return false; } else if(this.document.fm.ready[1].checked==true && ( isNaN(this.document.fm.yy.value)==true || isNaN(this.document.fm.mm.value)==true || isNaN(this.document.fm.dd.value)==true || isNaN(this.document.fm.hh.value)==true || isNaN(this.document.fm.ff.value)==true || isNaN(this.document.fm.ss.value)==true)){ alert("请输入合法的发送时间!"); return false; } else return true; } //--> </SCRIPT> </HEAD> <BODY bgColor=#FFFFFF topmargin="0" leftmargin="0"> <!--http://www1.wst.net.cn/scripts/flex/gsm/post.asp--> <FORM action=http://www1.wst.net.cn/scripts/flex/gsm/post.asp method=POST name=fm οnsubmit="return checkdata()" style="float: left"> <DIV align=left> <TABLE bgColor=#D4D0C8 border=1 borderColorDark=#ffffff borderColorLight=#000080 cellPadding=0 cellSpacing=0 width=320> <TBODY> <TR> <TD width="316"> <DIV align=center> <TABLE border=0 cellSpacing=1 width="95%"> <TBODY> <TR> <TD style="FONT-SIZE: 9pt" width="100%"><B>输入手机号码:</B><INPUT name=PhoneID></TD></TR> <TR> <TD style="FONT-SIZE: 9pt" width="100%"><B>编码选项:</B><INPUT CHECKED name=chinesechar type=radio value=1>中文 <INPUT name=chinesechar type=radio value=0>西文</TD></TR> <TR> <TD style="FONT-SIZE: 9pt" width="100%"><TEXTAREA cols=39 name=message rows=3></TEXTAREA></TD></TR> <TR> <TD style="FONT-SIZE: 9pt" width="100%"><B>定时发送:</B><INPUT CHECKED name=ready type=radio value=0>否 <INPUT name=ready type=radio value=1>是 <BR>发送时间:<INPUT name=yy size=4>年<INPUT name=mm size=2>月<INPUT name=dd size=2>日<INPUT name=hh size=2 value=00>:<INPUT name=ff size=2 value=00>:<INPUT name=ss size=2 value=00></TD></TR> <TR> <TD style="FONT-SIZE: 9pt" width="100%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <INPUT name=B1 type=submit value=搞定了>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <INPUT name=B2 type=reset value=我反悔></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></DIV> <input type=hidden name=dtype value=0 > </FORM></BODY></HTML>           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值