如何使用解析服务器正确设计可靠的确认机制
How to properly design a reliable acknowledgment mechanism using Parse Server?
我正在开发一个将发生这种情况的应用程序
- 解析服务器发送静默推送通知,告诉应用唤醒并拉取新数据
- 应用向服务器发送获取新数据的请求,服务器会做出响应
- 服务器不知道应用程序是否接收了数据.....
如何解决这最后一步?如何确保应用程序有机会确认收到数据?
谢谢
试图解决两个将军问题不太可能有成效。相反,请考虑如何设计一个可以容忍故障的系统。
您的推送通知可能永远不会送达。你的应用是否可以在将新数据置于前台时检查新数据,或者进行一些备份以使其仍然有用?
收到推送通知后,您的应用可能无法发送加载此数据的请求。是否可以依赖下一个通知,或者将其视为缺少的通知,并且仍然允许应用有用?
请求数据后,应用可能永远不会收到响应。同样,您如何确保该应用程序对其用户有用?如果及时传递此数据并不重要,则可以依靠重试机制。如果它很关键,也许您需要某种方式在看起来过时时警告用户。
哪种解决方案对您有意义实际上取决于您的应用正在做什么以及它为什么需要这些数据。
我会这样做:
- 当应用程序发送到服务器请求新数据时,也发送ID码
- 服务器存储此 ID
- 当应用程序结束数据接收时,向服务器发送带有 id 的接收正常消息。
- 当服务器从应用程序收到"接收正常"消息时,请从其列表中删除应用程序的 ID。
通过这种方式,服务器知道有多少应用程序要求数据传输以及有多少应用程序成功接收数据。
用于数据传输的应用程序 ID 可以在任何传输会话之间更改。
相关文章:
- 按钮字段确认点击不'不起作用
- 删除确认对话框在第一次单击时不起作用
- 在表单完成并确认密码之前,请禁用提交按钮
- REST的面向公众的身份验证机制
- 在asp.net中确认是或否消息
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- javascript确认对话框有时会不断出现
- 是否可以用变量确认提示警报
- 检测在确认页面导航时单击了哪个按钮
- 确认前执行
- 如何为javascript方法放入jquery确认对话框
- jQuery:确认.html()是否可添加
- 是否可以将JXBrowser显示的JS确认对话框的结果返回到调用它的JS部分
- 在离开Aurelia.js上的页面之前,我如何要求用户进行确认
- 火灾在卸载前确认警报仅适用于外部站点
- 如何在批准露天共享中工作流的审核步骤之前添加确认对话框
- 在AngularJs中添加轮询机制
- Rails:将表单字段值添加到数据确认消息中
- 需要确认我对Servlet vs RESTful网页的理解's的差异
- 如何使用解析服务器正确设计可靠的确认机制