2012-11-16 16:05题主

编写浏览器客户端和服务器端“长连接”的Web应用。

大家知道,HTTP协议是无状态的协议,那么如何实现浏览器客户端和服务器端的“长连接”呢?
“长连接”的应用比较广泛,比如Gmail、Gtalk、Web QQ等。
事实上真正的长连接在Web上是没有较好的解决方案,只能模拟实现。
比如Web QQ监听聊天,一般开发人员可能会采用定期轮询去服务器端监测,其实较好的方法是使用Ajax间隔监听。
实现方法如下:
1、添加Ajax组件,设置timeout为-1(永不超时);
2、发起Ajax请求,然后监听服务器端的返回;服务器此时应该处于同步阻塞状态;
3、当服务器有返回时,Ajax请求结束,重新发起Ajax请求,然后循环。
长连接实现的原理,是始终有一个Ajax请求同服务器端保持连接(服务器处于同步阻塞状态,但客户端请求又不超时)。每完成一次交互,又重新建立一个新的Ajax请求。
2012-11-16 16:06#1
我使用此方法编写新邮件实时监听,效果很好。
2012-11-16 16:10#2
方法不错,多谢分享。
2012-11-17 13:09#3
问题是一个服务器能支持多少这样的长连接?
2012-11-17 14:46#4
window能建立的链接不超过1000个 linux好些 用户数大只能做集群或定时轮询
2013-04-27 11:34#5
IE浏览器只支持最多有两个服务器端keep-alive的“长连接”,这一点要注意。
2013-04-27 11:54#6
所谓长连接,在web上都是模拟的,一般每隔一段时间(数十秒)会重新请求一次,同所用的浏览器无关

返回开发者社区