现在有一个需求:
当网站某一会员登录时,向他的所有好友发送一个消息(窗口右下角弹出,类似QQ那样)提示该会员已经上线。google一下,很多人都在在bs下无法实现推送技术,不管是.net还是java,除非自己写个ActiveX插件。目前我所能做到的就是用ajax定时去获取是否在线的状态。
像百合网就有这功能,当某一人上线后系统会提醒你某人已上线。
当网站某一会员登录时,向他的所有好友发送一个消息(窗口右下角弹出,类似QQ那样)提示该会员已经上线。google一下,很多人都在在bs下无法实现推送技术,不管是.net还是java,除非自己写个ActiveX插件。目前我所能做到的就是用ajax定时去获取是否在线的状态。
像百合网就有这功能,当某一人上线后系统会提醒你某人已上线。
解决方案 »
- asp.net中treeview的数据绑定问题
- 学习ASP.NTE需要学好html,css,javascript吗
- 如何让session在关闭页面后自动清空?
- 请问.net里边 "#" 和 "~" 是什么意思?
- 我用如下方式来取得指定网页的HTML文件,可是包含汉字的全是乱码
- 用javascript如何判断控件是否存在
- 结交好友,重点讨论邮件收发和短信收发。。
- 【求助】关于showmodaldialog在firefox下不能工作的问题
- 象这种对象类型的怎么给他们赋值?这些语句在VB里都可以执行的,可是C#中就不行了~~~~:(
- aspx中的javascript脚本不能正常处理中文的问题
- 關於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请求来之后将缓存中得状态为“未阅读”的数据获取返回到前台,同时在缓存中踢出此信息。