0

我得到了一个 mxml 文件,它通过 HTTPService.send() 调用在我的 http 服务器上启动一个脚本。

由于服务器端的脚本需要很长时间(可能需要一个多小时),所以我想在单击按钮时断开我的空中应用程序和服务器之间的连接。

不知道为什么,但调用 HTTPService.disconnect() 完全没用......没有 tcp 连接断开,脚本继续在服务器端运行。

没有 HTTPService.cancel() 也没有设置 HTTPService var 为 null 工作。

如何断开连接?

提前致谢

4

1 回答 1

0

我不确定您期望发生什么,基于查看您所指的两种方法的文档,它们都没有说它会关闭 TCP 连接,实际上相反,他们说他们不等待或做任何事情关于 TCP 连接:http ://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/http/HTTPService.html

取消()

  • 取消最后一次服务调用或具有指定 ID 的调用。即使网络操作仍可能继续,也不会调度任何结果或故障事件(<- 这就是它所做的,停止调度结果或故障事件)。

断开()

  • 断开服务的网络连接。此方法不等待未完成的网络操作完成(没有说明它停止现有网络操作,只是断开此服务网络连接)。

您可以深入了解源代码以更具体地了解正在发生的事情,但基本上正如文档所述,它只是从本地存储的列表中删除调用,以便为具有侦听器的“活动”调用调度事件。本质上,Flex 无法知道它正在处理什么样的服务/服务器,也无法适当地向服务器发出信号以取消它目前正在执行的任何操作。您可以在服务器上编写另一个专门用于终止另一个进程的服务,因此您可以在 HTTPService 上调用取消,然后向执行终止进程脚本的服务器发送另一个请求(关闭打开的套接字,停止任何挂起的操作,必要时终止或重新启动服务),但是有' 如果不知道您想要阻止发生的服务器端处理是什么,这不可能完全自动化。想象一下,如果有一个开放网关可以通过客户端代码取消服务器上的操作,这对我来说听起来很危险。

于 2012-03-20T19:43:13.423 回答