我有一个mxml文件,它通过HTTPService.send()调用在我的http服务器上启动脚本。
由于服务器端的脚本需要一个LOOOONG时间(可能需要一个多小时),我想在单击一个按钮时断开我的空中应用程序和服务器之间的连接。
不知道为什么但是调用HTTPService.disconnect()完全没用...没有tcp连接丢失,脚本继续在服务器端运行。
没有HTTPService.cancel(),也没有将HTTPService var设置为null。
如何断开连接?
提前致谢
答案 0 :(得分:0)
我不确定你期望发生什么,基于你所指的两种方法的文档都没有说它将关闭TCP连接,实际上恰恰相反,他们说他们不等待或做任何关于TCP连接的事情:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/http/HTTPService.html
您可以深入了解源代码,以便更加具体地了解正在发生的事情,但基本上,文档声明它只是从本地存储的列表中删除调用,以便为具有侦听器的“活动”调用分派事件。从本质上讲,Flex无法知道它正在处理什么样的服务/服务器,并且适当地向服务器发出信号以取消它正在进行的任何操作。您可以在服务器上编写另一个服务,专门用于杀死另一个进程,因此您可以在HTTPService上调用cancel,然后向执行kill进程脚本的服务器发送另一个请求(关闭打开的套接字,停止任何等待操作,必要时杀死或重新启动服务),但如果不了解您希望停止发生的服务器端处理,则无法完全自动化。想象一下,如果有一个开放的网关通过客户端代码取消服务器上的操作,这听起来很危险。