2012-03-20 5 views
0

HTTPService.send() 호출을 통해 HTTP 서버에서 스크립트를 실행하는 mxml 파일이 있습니다.플렉스 HTTPService.disconnect() 무엇을해야합니까?

서버 측 스크립트가 LOOOONG 시간 (1 시간 이상 걸릴 수도 있음)이 걸리므로 버튼을 클릭하면 내 Air 응용 프로그램과 서버 사이의 연결을 끊고 싶습니다.

왜 HTTPService.disconnect()를 호출해도 전혀 쓸모가 없다. 서버 연결이 끊어 지거나 스크립트가 계속 실행되지 않는다.

아니요 HTTPService.cancel()도 HTTPService var를 null로 설정하지 않았습니다.

어떻게 연결을 끊을 수 있습니까? 사전

+0

나는 disconnect()가 연결을 끊을 것으로 기대한다. 당신은 그것이 아니라고 말합니다. 어떻게 알 수 있니? 나는 그것이 서버 측 스크립트에 어떤 영향을 미치길 기대하지 않는다. – JeffryHouser

답변

0

에서

덕분에 나는 반대로 실제로는 TCP 연결을 닫습니다 말한다 당신은 어느 쪽도 참조하지 않는 두 가지 방법에 대한 문서보고에 따라, 일이 기대 모르겠어요 그들은 그들이 기다리거나 TCP 연결과 관련하여 아무것도하지 말 : http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/http/HTTPService.html

cancel()

  • 마지막 서비스 호출 또는 지정된 ID를 가진 invokation을 취소합니다. 네트워크 작업이 계속되는 경우에도 아무 결과 나 오류 이벤트도 전달되지 않습니다 (< - 이것이 수행하는 작업이며, 결과 또는 오류에 대한 이벤트가 전달되지 않습니다).

disconnect()

  • 서비스의 네트워크 접속을 절단. 이 방법은 미해결 된 네트워크 작업이 완료 될 때까지 기다리지 않으며 기존 네트워크 작업이이 서비스 네트워크 연결의 연결을 끊는 것만 중지한다는 것을 나타내지 않습니다.

소스를 파헤 치면 어떤 일이 벌어지고 있는지 구체적으로 알 수 있지만 기본적으로 설명서에는 로컬에 저장되어있는 목록에서 호출을 제거하는 것이 나와 있기 때문에 "활성"호출에 대한 이벤트를 발송합니다 청취자. 본질적으로 Flex가 어떤 종류의 서비스/서버를 처리 하는지를 알 수없고, 서버가 현재하고있는 작업을 취소하기 위해 서버에 적절하게 신호 할 방법이 없습니다. 다른 프로세스를 죽이기 위해 특별히 만들어진 서버에 다른 서비스를 작성할 수 있습니다. 그러면 HTTPService에서 cancel을 호출 한 다음 kill 프로세스 스크립트를 수행하는 다른 요청을 서버에 보낼 수 있습니다 (열린 소켓 닫기, 보류중인 작업, 필요하다면 서비스를 다시 시작하거나 다시 시작하는 작업), 처리가 서버 측에서 처리되기를 원하지 않으면 완전히 자동화 될 수 없습니다. 클라이언트 코드를 통해 서버에서 작업을 취소 할 수있는 개방형 게이트웨이가 있다고 가정 할 때 이것은 위험한 것으로 들립니다.