虽然使用close()方法关闭URLLoader实例,但AS3程序仍保持连接处于打开状态。 一旦加载数据,有没有办法立即关闭连接?AS3 - 如何关闭tcp连接?
使用netstat命令从命令行检查连接状态,它显示为Esh建立。
请建议。
虽然使用close()方法关闭URLLoader实例,但AS3程序仍保持连接处于打开状态。 一旦加载数据,有没有办法立即关闭连接?AS3 - 如何关闭tcp连接?
使用netstat命令从命令行检查连接状态,它显示为Esh建立。
请建议。
URLLoader是一个HTTP包装器。你必须使用HTTP的东西来完成它。 为了关闭连接,您必须发送Connection: close
HTTP标头以及网络服务器响应。(请注意,大多数网络服务器的默认设置是Connection: Keep-Alive
,这是您所看到的行为)。
为了将它从闪存发送到服务器,您必须具有local-trusted
或AIR application
沙箱。在浏览器(在互联网上)运行时,这是不可能的。
从docs:
在Flash Player,并在应用程序安全沙,以下请求头不能使用以外的Adobe AIR内容,和限制的术语不区分大小写(例如,获取,获取和GET都是不允许的)。此外,如果使用下划线字符(例如,不允许Content-Length和Content_Length),则使用带连字符的术语:
Accept-Charset,Accept-Encoding,Accept-Ranges,Age,Allow,Allowed,Authorization,收费,连接,连接,内容长度,内容位置,内容范围,Cookie,日期,删除,ETag,期望,获取,头,主机,如果修改自从,保持活着,修改,位置,最大转发,选项,起源,发布,代理验证,代理授权,代理连接,公共,放,范围,Referer,请求范围,重试后,服务器,TE,跟踪,传输编码,升级,URI,用户代理,Vary,Via,警告,WWW身份验证,x-flash版本。
谢谢,这真的很有帮助!我可以从这里了解到我需要从web服务器设置响应标题“Connection:close”。如果这是正确的,我不能使用这种方法,因为我只处理客户端代码。客户端的任何建议都会很棒! – parth
我也包含了客户端视角。这是一个完整的答案,你不会比这更好。既然你甚至不能在服务器端设置一个头文件(甚至mod_headers,webserver config等),我甚至不会让你提升权限,所以你可以直接连接到套接字并实现你自己的HTTP解析器(因为它需要比配置Web服务器多得多)。 –
您是否尝试销毁URLLoader对象(这可能不起作用,由Flash维护的连接将由任何URLLoader对象共享),并向垃圾收集器提供垃圾回收提示? http://stackoverflow.com/a/11450161/584490 –