网站A向网站B发送请求,网站B处理很长时间,再返回给网站B,如果用户关闭这个网页后如何还取得网站B返回的数据?

zcxverygood123456 2017-04-08 06:28:00
在网站A,点一个按钮,调用网站B的接口,发送数据给网站B,要等网站B处理完后,网站A也是通过另外一个接口取得网站B的返回的数据。

现在改成,网站A通过接口发送数据给网站B,由于网站B处理的数据需要时间很长,一般用户会把网页关掉,网站A就得不到网站B返回来的数据,能不能在网站A建立一个接口或页面什么的,在用户关掉网页后,也会自动接收网站B返回来的数据。

注意,网站A取得网站B的数据,只能通过网站B提供的接口来获取,网站B不支持异步传输数据方式给网站A。
...全文
916 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
yukeung 2017-04-26
  • 打赏
  • 举报
回复
引用 22 楼 u011427035 的回复:
你說的有點模糊,有三種情況: 1. B網站 保存請求結果,並提供查詢歷史記錄的接口 2. A網站 保存請求結果 3. 雙方都不保存結果 先說第三種,由於雙方都不保存結果,中途關閉之後這個結果就丟失了。 其他兩種(1,2說起來就是一種,也就是可以查詢到請求結果的歷史記錄 ): 你可以在用戶發起請求的時候記錄一個請求編號,是否已經查看結果。比如用Cookie,數據庫等。 用戶在綫接收完結果才關閉:當接收到結果的時候,就把上面說的請求編號的記錄丟掉,或者把已經查看結果改成是,Cookie建議丟掉,完成。 用戶沒接收完就關閉: 由於請求的結果已經被保存了,當用戶重新打開的時候,就檢查一下是否有未查看結果的請求記錄,如果是的話根據請求編號,發個請求到A 或者 B 查詢歷史記錄,把結果顯示給用戶,丟掉請求記錄,完成。
補充一下: 如果是直接在用戶瀏覽器Ajax提交數據的,並中途關閉的,那麼只有在 B網站 保存請求結果,並提供查詢歷史記錄的接口,情況下,才有可能獲取到最後的結果。 如果是先提交到A後臺,A再提交到B,B返回的結果先發到A的後臺,那麼A就可以保存這個結果。如果用戶在綫就直接返回給用戶,如果已經關閉了。就等待用戶重新上線查詢的時候再取出返回。 所以,如果要能在關閉之後,重新上線還能獲取結果,那一定要保存請求的記錄。
yukeung 2017-04-26
  • 打赏
  • 举报
回复
你說的有點模糊,有三種情況: 1. B網站 保存請求結果,並提供查詢歷史記錄的接口 2. A網站 保存請求結果 3. 雙方都不保存結果 先說第三種,由於雙方都不保存結果,中途關閉之後這個結果就丟失了。 其他兩種(1,2說起來就是一種,也就是可以查詢到請求結果的歷史記錄 ): 你可以在用戶發起請求的時候記錄一個請求編號,是否已經查看結果。比如用Cookie,數據庫等。 用戶在綫接收完結果才關閉:當接收到結果的時候,就把上面說的請求編號的記錄丟掉,或者把已經查看結果改成是,Cookie建議丟掉,完成。 用戶沒接收完就關閉: 由於請求的結果已經被保存了,當用戶重新打開的時候,就檢查一下是否有未查看結果的請求記錄,如果是的話根據請求編號,發個請求到A 或者 B 查詢歷史記錄,把結果顯示給用戶,丟掉請求記錄,完成。
小贤820 2017-04-24
  • 打赏
  • 举报
回复
感觉你想太多了,跟用户关不关闭网页都没有关系; 调取其他网页数据,只要你接收页面存在,把数据存入数据库就可以了;
孤独的海啊 2017-04-24
  • 打赏
  • 举报
回复
引用 7 楼 zcxverygood123456 的回复:
这个跟有没有后台没关系嘛 我就只问用户提交数据到银行,没等银行返回结果,用户就把这个页面关闭了,网站这边就无法处理这个用户的数据了。咋办? 网站肯定有后台啊,但这跟网站后台有什么关系呢? 是不是需要在网站后台建立什么页面来接收银行返回的数据呢?
数据不要直接提交到别的网站呗,提交给我们后台,咱们后台异步再发给别的网站,回来的数据直接进咱们网站的数据库或者什么地方。然后提前返回给客户一个叫他等的页面,这样客户关闭了浏览器也没关系啊。后台是另外一个线程做的请求,等用户回来再看的话结果姐直接从咱们后台返回给他上次的结果。 不要让网页直接到别的网站上面去。 如果非要嵌入其他网站的内容,一般情况下你后台也需要有一个回掉的地方,等用户在其他网站操作完要跳转回到你的页面才行。如果用户在其他网站上就关闭页面了,那咱们也没办法,不过我估计你这个场景不是这种。
leonken88 2017-04-21
  • 打赏
  • 举报
回复
回复的人太多了,我就不看了。理论上B站必须有定时轮询的功能。记得我在对接支付宝接口的时候,我调用支付宝付款接口,同时要传一个我们这边接受“轮询的接口地址”,目的就是用户关闭浏览器,或者其他原因通知我方不成功时,支付宝可以定时轮询调用我方接口。
shjsmhkd 2017-04-13
  • 打赏
  • 举报
回复
引用 17 楼 zeratul1990 的回复:
你有网站后台,a页面的数据传给a的后台,a后台去和b交互啊,a后台接收b的回复之后记录到用户头上就行了,记作未读消息 就算我开csdn发个帖然后关闭页面,有人回复我,我以后随时再来csdn的时候也一样能看到提示的
感觉是这个道理
拜一刀 2017-04-12
  • 打赏
  • 举报
回复
你有网站后台,a页面的数据传给a的后台,a后台去和b交互啊,a后台接收b的回复之后记录到用户头上就行了,记作未读消息 就算我开csdn发个帖然后关闭页面,有人回复我,我以后随时再来csdn的时候也一样能看到提示的
Hertz_liu 2017-04-12
  • 打赏
  • 举报
回复
想太多了,你系统现在体验己经这么差了,也不在乎再差一点 用户提交数据,出个等待页面,告诉用户,如果提前关闭,数据可能丢失,需要重新提交,责任转移
  • 打赏
  • 举报
回复
消息队列,订阅消息。 只要B成功插入消息队列 A订阅B站消息 就算A隔天登录 都能收到B站的消息
by_封爱 2017-04-10
  • 打赏
  • 举报
回复
就是支付成功回调POST你的网页 你来更改你的"订单状态"而已.. 这不就是正常流程吗? 你新建一个"回调页面" 人家自动就请求你这个页面了. 记住 跟"客户是否关闭页面" 没一毛钱关系.... 是你自己想太多了...
Poopaye 2017-04-09
  • 打赏
  • 举报
回复
引用 11 楼 zcxverygood123456 的回复:
用户提交数据给A,到这一步,用户就把网页关了, A还会继续处理?
自己试吧,如果不会运行了那就是你程序的问题了
zcxverygood123456 2017-04-09
  • 打赏
  • 举报
回复
网站是B/S架构, 用户提交数据给A,到这一步,用户就把网页关了, A还会继续处理? 我的所有处理程序逻辑都在这个页面上,如果把这个页面关掉了,网站A就不会往下处理了的。 不知有什么办法,用户提交数据到A的什么页面或服务,即使把这个页面关闭了,也继续处理下去。 如果A再把结果呈现给用户,最后一步,那也只能等用户再次打开网页比如订单列表查看是否缴费成功了。
长空X 2017-04-09
  • 打赏
  • 举报
回复
你可以在用户提交请求后,, 给用户一个正在处理 请稍等的提示呀//.前台显示
Poopaye 2017-04-08
  • 打赏
  • 举报
回复
引用 7 楼 zcxverygood123456 的回复:
我就只问用户提交数据到银行
用户提交数据给A,A再提交给银行,银行也是返给A,A再把结果呈现给用户 难道你是用户直接和银行交互? 就要像用户直接和供货商交易,还要你这个中间商有什么用?
Poopaye 2017-04-08
  • 打赏
  • 举报
回复
引用 7 楼 zcxverygood123456 的回复:
这个跟有没有后台没关系嘛 我就只问用户提交数据到银行,没等银行返回结果,用户就把这个页面关闭了,网站这边就无法处理这个用户的数据了。咋办? 网站肯定有后台啊,但这跟网站后台有什么关系呢? 是不是需要在网站后台建立什么页面来接收银行返回的数据呢?
有后台,和B的交互当然都在后台完成 前台的用户关不关页面有什么关系? 难道你前台关闭了,还会把后台程序一起关了?
zcxverygood123456 2017-04-08
  • 打赏
  • 举报
回复
如果银行那边有返回记录,能提供查询接口,网站这边可以写一个服务,定时向银行查询用户提交的数据,返回的结果是什么,然后再进行下一步的数据处理。
zcxverygood123456 2017-04-08
  • 打赏
  • 举报
回复
这个跟有没有后台没关系嘛 我就只问用户提交数据到银行,没等银行返回结果,用户就把这个页面关闭了,网站这边就无法处理这个用户的数据了。咋办? 网站肯定有后台啊,但这跟网站后台有什么关系呢? 是不是需要在网站后台建立什么页面来接收银行返回的数据呢?
Poopaye 2017-04-08
  • 打赏
  • 举报
回复
引用 2 楼 zcxverygood123456 的回复:
网站A,是我们自己可控制的网站, 网站B,是别人的网站,我们两个网站有数据来往,就得相互处理数据,他们只提供接口调用方式。 用户登录我们的网站A,点击提交按钮后,就往网站B(通过网站B提供的接口)发送请求,网站B收到请求后,要花时间处理,有时候处理时间比较长,用户等得不耐烦,就把网页关掉了,那就取不到网站B返回的数据是什么了。 现在怎么在用户关掉页面后,网站B处理好后把处理结果通知网站给网站A的这个用户(已关掉网页了)。
不要再重复一遍,我是问你们没后台吗? 数据来往难道靠客户端?
zcxverygood123456 2017-04-08
  • 打赏
  • 举报
回复
比如商城,用户点支付按钮,已向银行提交信息了,但银行那边处理中,用户等待不耐烦了,不等这个返回结果了,直接把这个网页关闭了。
  • 打赏
  • 举报
回复
你需要能够明确说明你们的流程。 比如说我有一个页面,上面计算我输入的两个数的乘积,然后打印出来。假设我点击“乘积”按钮之后立刻关闭了浏览器窗口,那么这个乘积也会在服务器上计算完毕啊?!!并不会被我“关闭”啊?!! 你说的用户关闭了浏览器页面、于是A就收不到B的返回值了,是怎么回事儿?是由开发人员根据代码和测试来提出的问题还是行政管理人员自己想的呢?最好能明白说明实际的设计流程,才好进一步设计。
加载更多回复(3)

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧