Pubnub:拍卖应用程序开发的后台流程

Pubnub: Background Processes for an Auction App Development

您好,我正在开发类似 tophatter.com 的拍卖应用程序。我想实现一个具有后台进程的应用程序。我希望这个过程永远 运行 直到我停止它

http://eoction.com 这就是我们当前的网站。我们网站上的问题当我们刷新页面时拍卖也重新启动。我们需要像 tophatter.com 这样的连续过程,如果您刷新页面,它将加载更新的拍卖过程。

我发现了一项名为 pubnub 的出色服务。我在想我们需要一个后台进程吗?这将处理 pubnub 块上的拍卖,然后当我们访问该站点时,我们只需要查询其更新的过程?

pubnub 支持这样的东西吗?

PubNub 网页最佳实践

当用户刷新您的网络应用程序页面或导航到另一个页面时,作为网络应用程序开发人员,无论您使用何种技术,您都需要考虑一些事情。当 PubNub 集成到您的网页时,我将在较高层次上说明您需要做的事情。

恢复参数

无论是用户中断了您与 PubNub 的连接还是网络故障,您都会希望 PubNub 重新连接并尽可能从中断处继续。 PubNub JavaScript SDK 有一个名为 restore 的初始化参数,当设置为 true 时,将重新连接到 PubNub 并在连接断开并重新建立后获取丢失的消息。

var pubnub = new PubNub({
    subscribeKey: "mySubscribeKey",
    publishKey: "myPublishKey",
    ssl: true,
    uuid: getUUID();
    restore: true
});

重复使用 UUID

为每个最终用户重复使用相同的 UUID 很重要,因为这将允许 PubNub 在出现状态时唯一地识别该用户,这样它就不会为同一端产生新的 join 事件用户。 PubNub JavaScript SDK actually generates a UUID and stores it in localStrorage and reuses it by default 但很可能您有自己的 UUID,您希望将其用于每个最终用户。

上次收到消息的时间令牌

如果网络中断时间很短(例如页面刷新或页面导航),则在如上所述 init 中实施 restore:true 时会检索遗漏的消息。但是当用户离线超过 5 分钟时,您可能希望在一个或多个频道上检索错过的消息。执行此操作的最佳方法是每次通过subscribe回调。当用户重新上线并且距离他们上次上线已经超过 5 分钟时,call history using this last received message timetoken on each channel 您需要从中获取错过的消息。

订阅频道

最后,您需要确保用户根据他们在连接中断之前的状态订阅了他们期望订阅的频道。如果是页面刷新,您可能只想将它们重新订阅到相同的频道列表。为此,您只需要再次在 localStorage 中保留他们当前订阅的频道列表。如果用户导航到新页面并导致整个页面重新加载(现代网络应用程序不应该要求这样做,但是......)那么您可能想要取消订阅某些频道并订阅新频道,这仅取决于该页面导航对您的应用程序意味着什么。现代网络应用程序框架不需要为页面导航重新加载整个页面,因为网络应用程序比旧的网络应用程序更像桌面应用程序。同样,如果用户离线了很长一段时间(超过 5 分钟),那么让他们订阅他们之前订阅的相同频道可能没有意义。真的取决于您的用例。

顺便说一下,Tophatter 使用 PubNub ;) 但以上所有内容都是通用的最佳实践指南和建议,并没有特别引用任何一个应用程序。

EDIT: To address you question specifically, as pointed out in comments below...

您不能在 PubNub BLOCKS 中实施长 运行 进程(无论如何,目前不能),因此您需要一个服务器进程。当用户刷新页面时,您只需要访问您的服务器以获取当前状态。如果使用 PubNub 实时更新此进度条,您只需订阅发送该进度条状态的频道并更新您的客户端。使用我上面提供的相同最佳实践仍然是必要的。