【发布时间】:2014-08-14 00:44:00
【问题描述】:
我正在编写一个通过Pusher 使用WebSockets 的应用程序。这是一个 Ruby on Rails + AngularJS 应用程序,但这应该适用于任何堆栈,真的。
我刚刚意识到我的应用不会处理错过的推送事件,我很想知道一些已建立的模式是什么。
我的应用不是聊天,但让我们假设它是。
当页面加载时,它会从数据库中获取最后 100 条聊天消息并显示出来。
每当有新的聊天消息进来时,服务器都会通过 Pusher/WebSockets 将新消息推送给客户端。
但是!如果客户端在推送时处于离线状态或处于睡眠模式,他们可能会错过消息。
处理这个问题的好模式是什么?
关于检测客户端“唤醒”并强制重新加载整个页面或请求自某个时间戳或某个事件以来的事件,我有一些模糊的想法,但是我不确定什么是好的方法在不添加轮询的情况下确定“醒来”。也许使用 Pusher 的 client presence 或 connection states 功能,检测用户何时(重新)连接?
我无法找到从 Pusher 获取事件历史记录的方法,所以我想我必须自己存储这些,然后仅将它们发送回该客户端。
【问题讨论】:
标签: angularjs websocket pusher