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

标签 javascript jquery ajax pubnub

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

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

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

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,您希望将其用于每个最终用户。

收到最后一条消息的时间 token

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

订阅 channel

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

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

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

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

关于javascript - Pubnub:拍卖应用程序开发的后台流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43846374/

相关文章:

javascript - isNaN 给出令人困惑的结果

javascript - URL 不会传递来自 ajax 输入的第二个 "select"值

Asp.net 页面管理

javascript - LeafLet map 无法在模态上正确呈现

javascript - 我的 Promise 的第一个 then 返回一个 Promise,即使被拒绝的方法中没有返回函数

php - 在 PHP 中为 JSON 对象分配标识符/名称

jquery - jQuery ajaxStop() 会进行递归调用吗?如果是这样,如何阻止它?

javascript - 为什么我的输出与导航栏页面中的标题重叠

javascript - 在 JQUERY 成功时调用函数

javascript - 每个选项卡的 Ajax 调用函数