Flex HTTPService.disconnect()它应该做什么?

时间:2012-03-20 13:19:26

标签: flex tcp connection httpservice disconnect

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

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

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

没有HTTPService.cancel(),也没有将HTTPService var设置为null。

如何断开连接?

提前致谢

1 个答案:

答案 0 :(得分:0)

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

cancel()

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

disconnect()

  • 断开服务的网络连接。此方法不会等待未完成的网络操作完成(并未声明它仅停止现有网络操作以断开此服务网络连接)。

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