2009-07-31 2 views
2

localConnection을 사용하여 서로 통신하는 두 개의 플래시 무비가 있으며 swfA에서 swfB로 객체를 전달합니다. 이것은 정상적으로 작동하지만 가끔 실패 할 것입니다. 우리가 가진 유일한 정보는 status 이벤트가 error의 레벨로 시작된다는 것입니다. 다른 정보는 없습니다. 연결이 실패하면 계속 연결됩니다.Flash Player의 localConnection이 때때로 가끔씩 실패합니까?

나는 왜 그런 일이 일어나고 있는지 알지 못하지만 보안 문제는 아닙니다 (둘 다 영화가 같은 도메인에서 실행되고 있습니다). 모든 통신은 try..catch으로 싸여 있습니다.

누구도 이것을 보지 못했습니까? 아니면 누군가가 영화 간 통신을위한 대체 방법을 제안 할 수 있습니까? ExternalInterface을 사용해 보았지만 전송 된 업데이트 수가 너무 느립니다.

+0

그들은 실패합니다. Sean이 아래에서 언급했듯이, 종종 이것은 이름 충돌 때문에 발생합니다 .... 그러나 다른 경우도 있습니다. 그들은 '일'하지만 확실하게 신뢰할 수는 없습니다. :( – Gabriel

답변

0

LocalConnection은 미친입니다. 컴퓨터를 거쳐 전 세계의 클립과 통신합니다. 즉, 같은 페이지에있을 필요조차 없습니다. 예를 들어, 실행중인 애플리케이션이 있다면 브라우저 기반의 애플리케이션과 통신 할 수 있습니다.

ID는 전역이며 충돌하는 경우 오류가 발생합니다. 같은 swf를 두 번 열면이 문제가 발생했습니다 (동일한 ID에서 수신 대기하므로). 별도의 페이지에 있더라도 이런 일이 발생합니다.

또 다른 옵션은 swfs가 서버를 폴링하고 데이터베이스를 통해 통신하도록하는 것입니다. 그게 도움이되는지 확실하지 않습니다. 내가 할 수있을 때 LocalConnection을 피하려고 시도했다.

1

우리는 문제를 해결 한 것처럼 보이지만 왜 실패했는지는 분명하지 않다. 속도가 타임 스탬프를 페이지를 새로 고칠 때마다 추가하여 각 영화에 대한 글로벌 고유 ID를 생성하는 문제

  • 하지 어디

    • externalInterface에 모든 것을 이동하여 localConnections의 수를 감소 : 우리는 다음과 같은 구현 (같은 id를 재사용하기보다는). 이것은 실패의 발생을 크게 줄이는 것처럼 보였습니다 (여전히 발생했지만).
    • LocalConnection ID에 '_'을 추가했습니다 (이유는 docs를 참조하십시오). 이것이 도움이되었지만 좋은 습관으로 보이는지 확실하지 않습니다.
    • 오류가 발생할 때마다 다시 연결하십시오. 다시 한번 말하지만, 견고성을 향상시키기 위해 구현하는 것이 좋지만, 이제는 실패가 발생하지 않았으므로 버그를 직접 수정해야 할 책임이 없습니다.

    결국 결정적인 문제가 해결되지 않아 문제가 해결되었습니다.

  • 0

    방금 ​​같은 문제가있었습니다. 내 해결책은 발견 될 때까지 연결로 다시 연결을 시도하는 타이머를 설정하는 것입니다. 연결이 성공하면 e.target.stop()을 설정하는 기능이있는 매우 간단한 타이머입니다.

    관련 문제