加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何显示连续的实时更新,如facebook ticker,meetup.com主

发布时间:2020-12-13 13:44:45 所属栏目:PHP教程 来源:网络整理
导读:如何在facebook ticker,meetup.com主页等浏览器中显示连续的实时更新?在 python,PHP,node.js以及服务器端的性能影响是什么? 如果页面被像akamai这样的CDN缓存,我们怎么能实现相同的更新呢? 您有两种选择(其他人已在上面详述).如果您不熟悉每个选项背后的
如何在facebook ticker,meetup.com主页等浏览器中显示连续的实时更新?在 python,PHP,node.js以及服务器端的性能影响是什么?
如果页面被像akamai这样的CDN缓存,我们怎么能实现相同的更新呢?
您有两种选择(其他人已在上面详述).如果您不熟悉每个选项背后的一些概念性想法,我想我会给出一两行关于它们的内容.请注意,我在非常非常高的层次上展示了这些概念.

你的三个选择是:

>短轮询
> Web Socket
> Comet / Long-Polling

短轮询

短轮询通过强制客户端不断向表单的服务器发送请求来克服Client-Server之间的单向通信:

Client: Do you have a message for me?
Server: No.
Client: (wait x seconds)
Client: Do you have a message for me?
Server: No.
Client: (wait x seconds)
Client: Do you have a message for me?
Server: Yes. Here it is!
Client: Yay!
Client: (update message)

代表客户的不断唠叨称为轮询.为了实现此结构,您需要将服务器设置为“侦听”来自客户端的这些轮询请求.服务器还必须在某处存储这些消息,以便在消息准备就绪时,服务器可以提供它们.在非常简单的级别,您的服务器需要:

>接受一般Web请求
>接受轮询请求
>运行获取消息的后台作业
>将这些消息存储在某处,以便在轮询请求进入时,服务器可以检查它们.

您还需要将这些轮询请求绑定到用户的某种会话ID,以便正确的消息到达正确的人.总的来说,范式很复杂,在我看来,效率低下.

Web套接字

Web套接字是HTML5的新增功能.它们背后的基本思想是客户端可以保持与服务器的直接连接,并且可以相互推送信息.因此,而不是通常:客户端发送GET请求>>服务器响应内容,Web套接字允许您保持持续对话.

但是,为了进行此设置,您需要:

>符合WebSocket的浏览器(并非所有浏览器都是).
>可以处理Web套接字的服务器(不确定如何清楚地说明这一点,但并非所有服务器都设置为这种安排).

设置有点复杂,虽然比长轮询更简单:

>客户端维护与启用Web-Socket的连接到Server的连接
>服务器通过Web套接字将结果推送到客户端
>根据结果更新客户端页面

你会看到这种模式被称为推送通知(当然,如果你拥有一台你已经体验过的iPhone),因为服务器已被授权将“东西”推送给客户端(多么不礼貌!).由于存在许多客户端和服务器的细微差别,我建议测试像Pusher这样的东西,它基本上是一个Web服务来处理Web套接字的所有难点部分.在开始自己设置之前,这将是一种简单的方法,您可以测试和玩模式.它有客户端和服务器端库.

希望信息为您提供解决问题的基准.其他答案有关于如何解决每个方案的更直接信息.

彗星/长轮询

另一种看似跨浏览器的Web套接字方法是Long-Polling(见Comet).在这种情况下,您的客户端建立与服务器的连接并使其挂起,等待数据被推回.这种设置有点复杂,但它确实代表了短轮询和Web套接字之间的中间地带.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读