如图
其实就是AJAX+轮询,但它每个HTTP请求持续半分钟,大大减少请求次数。但是一有新消息的时候,它又能立刻响应。请问是如何做到的呢?能否用PHP达到这种效果?
![]() | 1 oott123 2015-07-15 20:45:57 +08:00 ![]() long poll |
![]() | 2 picasso250 2015-07-15 21:37:08 +08:00 楼上正解。 for (;;) { sleep(1); } |
![]() | 3 djyde 2015-07-15 21:39:09 +08:00 我还以为是 socket 的 |
![]() | 4 mgcnrx11 2015-07-15 21:55:02 +08:00 |
![]() | 5 LuckyHJH OP 这种的话其实不算“推”技术吧,虽然客户端减少请求次数,但是服务器依然不断循环查询数据。 |
![]() | 6 alexapollo 2015-07-15 22:53:44 +08:00 long polling,很老的技术了 |
![]() | 7 whahuzhihao 2015-07-15 23:06:02 +08:00 之前写过一个页聊用的就是long polling。客户端发来的ajax带一个超时时间的参数,然后服务器在这个时间范围内死循环+sleep,一旦有新消息或者超过给定时间,则返回给客户端,客户端再另外发起一个请求。 或者用websocket吧,更稳定直观一些 |
![]() | 8 zado 2015-07-15 23:28:25 +08:00 服务器不去响应浏览器的请求,但是也不断开连接,直到有需要的时候才返回数据给浏览器。php的话应该有一个执行超时时间,过了这个时间应该会断开连接,即使服务器一直不断开,浏览器时间长了也会主动断开了,IE好像是60分钟。 |
![]() | 9 gqlxj1987 2015-07-15 23:46:01 +08:00 我们这边用的是一个icomet的服务来实现这种长连接 |
![]() | 10 blue7wings 2015-07-16 08:56:39 +08:00 使用WebSocket吧,https://pusher.com/ |
![]() | 11 linpf 2015-07-16 10:30:50 +08:00 长轮询。搜索“php comet” |
![]() | 12 w99wen 2015-07-16 18:02:36 +08:00 用的websocket。 |
![]() | 13 shoaly 2015-09-06 12:09:23 +08:00 via Android 搜野狗,目前我看到的一个 10 分钟可以真正用起来的方案 |