现在有一个需求:
当网站某一会员登录时,向他的所有好友发送一个消息(窗口右下角弹出,类似QQ那样)提示该会员已经上线。google一下,很多人都在在bs下无法实现推送技术,不管是.net还是java,除非自己写个ActiveX插件。目前我所能做到的就是用ajax定时去获取是否在线的状态。
像百合网就有这功能,当某一人上线后系统会提醒你某人已上线。
当网站某一会员登录时,向他的所有好友发送一个消息(窗口右下角弹出,类似QQ那样)提示该会员已经上线。google一下,很多人都在在bs下无法实现推送技术,不管是.net还是java,除非自己写个ActiveX插件。目前我所能做到的就是用ajax定时去获取是否在线的状态。
像百合网就有这功能,当某一人上线后系统会提醒你某人已上线。
解决方案 »
- C#窗体之间传值
- XYTipsWindow3.1 在vs2010中是如何引用的?
- 类型“LinkButton”的控件“Repjl_LinkButton1_0”必须放在具有 runat=server 的窗体标记内。
- 未处理的“System.StackOverflowException”类型的异常出现在 System.Web.dll 中。
- vs2005ispostback 问题,什么原因
- DataGrid分页的问题+CheckBox
- 安装ASP.NET的问题
- 请教一个有关多个textbox联动输入的问题!
- 求购一套邮件系统包括服务器和客户端(带源码)价格面议 ycdf()解决问题接分
- WScript.Shell的使用问题!
- 關於IE6下 showModalDialog
- 求各种asp.net树形的实现(增删查(递归绑定)改) 只发链接也可以的````````````````````````````````````````````
多余很多asp.net开发人员来说,就是用asp.net写一个小应用程序,数据库什么的都是在服务器端单机本地访问。这样你就没有专门的用于通讯的服务器端,就不要考虑做网络软件。这种方式的asp.net做一些网页式的OA,查询一下数据库资料就可以了。要想做实时通讯,即使是支持http长连接,你也应该自己拿出一台服务器机器专门开发一个服务器端系统,用于处理通讯服务,而不是用它来处理http请求的网页下载。
并不想做小软件或webqq
不是小软件,就要自己开发一个支持http长连接通讯服务器系统,这跟一般的网站网页处理并没有关系。
方法2,上面说的长连接,百合用的是jsp,jsp中有DWR长连接框架,不过.net暂时还没有发现有什么长连接框架,高手指点一下呢?
还想弱弱的问一下,所谓的服务器“推”技术是建立在长连接框架上的吗?两者有什么关系木有?
http://hck.iteye.com/blog/845816
我没有去看“百合网”。http长连接是用在需要比较专业的通讯程序开发上,如果就是简单地ajax轮询一下,何必要长连接?另外,很多网页不需要搞有点“玄”的http通讯方式,它完全可以根据客户端浏览器环境而推出一个基于Flash或者基于Silverlight的插件,用于处理tcp长连接,并且与网页交互。我在一开始也说过了这种解决方式。
这就是一个很简单的小范围应用
长链接就是个垃圾。
如代码:while(true)
{
Response.Write("22222222");
Response.Flush();
Thread.Sleep(1000);
}在客户端用xmlhttp.readyState==3 时获取数据
如代码: if(xmlhttp.readyState==3)
{
if(xmlhttp.status==200)
{
alert(xmlhttp.responseText);
}
}但是此方式在火狐浏览器上用可以,ie不行,xmlhttp.readyState==3时ie接受不到数据的。
ie上可以用iframe或new ActiveXObject("htmlfile") 去实现。我感觉长连接的效率也不高啊?
你改用jquery.ajax试试,我测试是可以的
不过也有问题,就是在请求页面不能使用会话对象,否则其它请求会被阻塞
我感觉长连接的效率也不高啊?
个人以为虽然不能和tcp/ip通信相比,但比用定时查询要好得多,
起码避免了频繁的与服务器连接,毕竟这是web程序
http://www.cnblogs.com/luhaiyan/archive/2011/04/22/2046615.html
不知楼上几位讨论的长链接跟ajax定时查询有什么区别。
定时查询只是瞬时的查询,查询完成之后就返回结果,不保证结果一定存在。
长连接相对而言连接的时间跟长一点,基本可能简单的理解为有查询结果就返回,如果没有查询结果,就不返回,继续在服务器端等待,直到有查询结果产生。我理解的长连接模式:
在JSP采用死循环发生ajax请求,请求进入后台之后,查询结果,如果存在结果,返回ajax请求,否则将请求防止在后台等待结果,直到结果产生或者超时返回到客户端。为了能够提高查询效率,可以认为的开辟一个缓存用于存放信息,ajax的请求查询基于缓存而不是数据库,从而减少定时与数据数据的交互。比如我们可以将发送的信息存在在数据库的同时,将其放在缓存当中,并可以同时设定其状态为“未阅读”,ajax请求来之后将缓存中得状态为“未阅读”的数据获取返回到前台,同时在缓存中踢出此信息。