8
为什么在Web编程中接受轮询?
我目前正在研究一个Ruby on Rails项目,该项目显示图像列表。 该项目的必备条件是它可以实时显示新帖子,而无需刷新网页。经过一段时间的搜索,我偶然发现了一些JavaScript解决方案和服务,例如PubNub;但是,所有提供的解决方案都没有道理。 在JavaScript解决方案(polling)中,会发生以下情况: 用户1查看照片列表。 JavaScript后台在后台每秒轮询一次端点,以查看是否有新帖子。 用户2添加了新照片。 在触发新周期并获取新数据之前,存在50 ms的延迟。 新内容已加载到DOM中。 当转换为真实示例时,这似乎很奇怪: 用户1在他/她的桌子上拿着一堆照片。 他/她每秒走到摄影师那里,问他是否有新摄影师。 摄影师拍了一张新照片。 当他/她走进来的那一秒钟,她可以拍照并将其放在桩上。 我认为解决方案应如下: 用户1在他/她的桌子上拿着一堆照片。 摄影师拍摄了一张新照片。 摄影师走到那堆,其余的放在一起。 PubNub解决方案基本相同,但是这次双方之间有一个实习生步行以共享数据。 不用说,这两种解决方案都非常耗能,因为即使没有数据要加载,它们也会被触发。 据我所知,没有(逻辑)解释为什么几乎在每个实时应用程序中都使用这种实现方式。