- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在开发像 tophatter.com 这样的拍卖应用程序。我想实现一个具有后台进程的应用程序。我希望这个过程永远运行直到我停止它
http://eoction.com这就是我们当前的网站。我们网站上的问题当我们刷新页面时拍卖也重新启动。我们需要像 tophatter.com 这样的连续流程,如果您刷新页面,它将加载更新的拍卖流程。
我发现了一项名为 pubnub 的出色服务。我在想我们需要一个后台进程吗?这将处理 pubnub block 上的拍卖,然后当我们访问该站点时,我们只需要查询其更新的过程?
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 很重要,因为这将允许 PubNub 在出现状态时唯一地识别该用户,这样它就不会产生新的 join
同一最终用户的事件。 PubNub JavaScript SDK actually generates a UUID and stores it in localStrorage and reuses it by default但很可能您有自己的 UUID,您希望将其用于每个最终用户。
如果网络中断时间很短(例如页面刷新或页面导航),则在 restore:true
时会检索丢失的消息在 init
中实现如上所述。但是当用户离线超过 5 分钟时,您可能希望在一个或多个 channel 上检索错过的消息。执行此操作的最佳方法是每次通过 subscribe
接收到消息时,通过将其存储在 localStorage 中来跟踪最后收到的消息的timetoken打回来。当用户重新上线并且距离他们上次上线已经超过 5 分钟时,call history
using this last received message timetoken on each 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/
从 0 开始搭建一套后台管理系统,成本巨大,所以都会选择一套成熟的组件库,基于此,再堆叠业务逻辑。我们公司的组件库基于 Ant Design。Ant Design 包含一套完整的后台解决方案,不仅
在我的 IOS 应用程序中,我有一个标记为 retain 的 NSDate* 属性 当我的应用程序再次激活时,属性值已被释放。 我是否误解了属性和内存管理的工作原理,我该如何防范? 最佳答案 很明显,
我有一个使用 BackgroundWorker 组件的示例 WinForms 应用程序。它工作正常,但是当我点击 Cancel 按钮取消后台线程时,它并没有取消线程。当我点击 Cancel 按钮调用
我目前正在开发一个应用程序,该应用程序在启动时会对服务器执行 ping 操作,该服务器会为每个连接的设备返回一个唯一标识符。设备每 5 秒从服务器检索另一页以获取一组不同的数据。这个唯一的 ID 可以
我正在开发一个应用程序,当它通过主页按钮在后台按下时,计时器应该启动,当应用程序返回前台并且计时器已经过了一定时间时,应该是执行。 我的问题是 当我的应用程序转到背景/前景? 是否有特殊的方法或其他技
我有 map View ,其中几乎没有 MKPointAnnotation。 一切正常,但是, View 的 MKPoiintAnnotation 的“背景”是“不可见的”,因此不是很“可见”。 我想
我在 iOS 中开发广告数据应用程序。我的应用程序广告数据在前台很好。但我想在 ios 后台宣传信标数据。我设置了背景外设设置。和广告数据 advertisingData = [CBAdvertise
如果我有一组操作,我想根据特定条件在后台工作程序中运行,例如,我有 10 个条件 if(a) BackgroundWorker doA = new backgroundworker() if(
我想独立运行一个函数。从我调用的函数中,我想在不等待其他函数结束的情况下返回。 我试过用 threadind,但这会等待,结束。 thread = threading.Thread(target=my
我想在用户在线时立即执行一些任务,即使他在后台也是如此。我正在使用 Reachability 类来检查互联网。但是当我在后台时,这个类没有通知我。我知道有人早些时候问过这个问题,但没有找到任何解决方案
我在后台播放文本转语音时出现间歇性(哎呀!)问题,由 Apple Watch 触发。我已经正确设置了后台模式、AVSession 类别和 WatchKitExtensionRequest 处理程序。
我有一个相当复杂的程序,所以我不会在这里转储整个程序。这是一个简化版本: class Report { private BackgroundWorker worker; public
我有一个任务在 backgroundworker 中运行。单击开始按钮,用户将启动该过程,并获得一个取消按钮来取消处理。 当用户点击取消时,我想显示一个消息框“进程尚未完成,你想继续吗”。 这里我希望
我有一个按以下方式编码的脚本。我想将它作为后台/守护进程运行,但是一旦我启动脚本,如果我关闭它从程序运行的终端窗口终止。我需要做什么来保持程序运行 loop do pid = fork do
我正在制作一个使用 ActivityRecognition API 在后台跟踪用户 Activity 的应用,如果用户在指定时间段(例如 1 小时)内停留在同一个地方,系统就会推送通知告诉用户去散步.
当尝试使用 URLSession 的 dataTaskPublisher 方法发送后台请求时: URLSession(configuration: URLSessionConfiguration.ba
当我编译这段代码时,我得到了他的错误,对象引用设置为null,错误位置在Dowork中,argumenttest.valueone = 8; public partial class Form1 :
有什么方法可以使用最小化或不活动的应用程序吗?我可以打开我的应用程序,然后打开并使用另一个应用程序,然后按一个按钮来激活我的程序吗? 例如,打开我的应用程序,打开 Safari,按下按钮(F1 或任何
我的具体要求是一个在后台运行的应用程序,被通知显示器即将进入休眠状态或者设备已经或即将达到空闲超时 - 然后唤醒并执行一些(简短的)一段代码。 我在这里找到了有关应用程序被置于后台或暂停的通知的引用:
我有一个 LSUIElement 设置为 1 的应用程序。它有一个内置编辑器,因此我希望该应用程序在编辑器打开时出现在 Cmd+Tab 循环中。 -(void)stepIntoForegrou
我是一名优秀的程序员,十分优秀!