1
xinyu198736 2015-01-08 13:23:37 +08:00
概念有些混淆
|
3
airyland 2015-01-08 13:33:19 +08:00
这叫轮循,不叫长连接吧。websocket才叫长连接。
|
4
xinyu198736 2015-01-08 15:56:30 +08:00
@airyland 长连接是 long polling ,跟socket不是一个概念,另外楼主这个只能叫做“超时连接”,跟long polling还沾不上太大的边。
|
5
meeasyhappy 2015-01-08 16:04:48 +08:00
给你赞一个
|
6
jc4myself 2015-01-09 00:47:18 +08:00 via iPad
ajax更多是异步的,异步就不会使用长链接
|
7
lerry OP @xinyu198736
@typcn @airyland @jc4myself 感谢指教~ 我写的是关于long polling,字面上看叫长轮询更恰当一些, 我理解的 轮询,定时向服务器请求,服务器立即响应, 长连接/轮询,服务器收到请求后,挂起,直到有新消息才返回, 但是为了连接的维持,设置了超时时间,同时服务器会在一定时间内返回 可以看这里 http://stackoverflow.com/questions/14903223/why-setting-a-client-side-timeout-when-using-long-polling 求教 @zythum |
9
zythum 2015-01-09 11:48:18 +08:00
我说下我的理解。可能也不是很正确。
长链接的链接一般是不中断的。使用http协议的Transfer-Encoding:chunked方式输出。一般实现是使用一个iframe发起请求(XMLHttpResquest貌似没发使用chunked)。然后通过脚本<script>parent.xxxxxxxx</script> 来处理,还是直接用iframe作为显示就随便。 长轮训一般使用XMLHttpResquest, 处理是发起一个请求。然后等到服务器响应(包括超时),之后再次发起一个请求。然后等到服务器响应(包括超时),之后再次发起一个请求。然后等到服务器响应(包括超时),之后再次发起一个请求。然后等到服务器响应(包括超时),之后再次发起一个请求。然后等到服务器响应(包括超时),之后再次发起一个请求。然后等到服务器响应(包括超时),之后再次发起一个请求。然后等到服务器响应(包括超时),之后再次发起一个请求。然后等到服务器响应(包括超时),之后再次发起一个请求。然后等到服务器响应(包括超时),之后再次发起一个请求... 特点是长链接的链接只有一个。长轮训的链接有多个。对于实时性来说。长链接更好。 轮询,就是 setInterval(sendRequest, 500)。 定时请求一下就好了。 以上都是基于http协议而言的。websocket不是http协议。是一个同样是tcp的协议。websocket和http起的服务时不一样的。 @airyland 一般来说。长轮训,长连接是特指上面的两种实现方式。如果从原理来说。即保持一个链接不中断。那么websocket也是这样的。 @typcn 这个方式很早就有了。互联网刚开始都是在线聊天室的时候都是这样处理的。 @jc4myself 异步不一定只是XMLHttpResquest. Ajax不单是XMLHttpResquest 字写太多了。估计有错别字。求谅解。 |
10
zythum 2015-01-09 11:56:18 +08:00
还有一个需要说的是websocket是双工的。可以通过同一个链接上行下传。 长连接单工的。只能实现服务端下传。
|
11
tamamaxox 2015-01-09 22:30:31 +08:00 via Android
不如先看看meteor的方案
|