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