ActionScript – 개발환경을 정말 이렇게 밖에 못 만드나
앞에서 언급한 것 처럼 ActionScript 를 가지고 삽질 중.
ActionScript 파일 (.as
) 들을 묶어서 클라이언트 응용을 띄우고, 서버 응용과 통신을 하게 되는데 (XML 교환이 가능) 이게 좀 가관이다. 앞에서 말한 “오프라인으로 FlashPlayer 를 설정할 수 없는 문제"를 차치하고라도, 단 하나의 클라이언트-서버 연결을 테스트하기 위해 다음과 같은 것이 필요하다.
- 클라이언트 응용이 컴파일된 .swf 파일 혹은 이에 해당하는 바이너리 — 내 경우엔 mtasc로 컴파일한 .swf
- .swf 를 서비스할 웹 서버 — 서버와 통신하려면 이 수단 밖엔. 혹은 외부 네트웍에 노출된 개발 서버
- .swf 의 통신에 대한 설정을 위한 Flash Policy Daemon
마지막이 좀 생소한 거였는데, adobe 홈페이지에선 지난 달 (4월 14일) 부로 Setting up a socket policy file server 라는 아티클이 올라왔다. 지난 Flash Player Update (9.0.r124.0) 이후로 플래쉬 플레이어 (웹 브라우져 내장(FF)과 오프라인 플레이어 모두 동일한 동작) 는 이런 동작을 한다.
- Socket Policy File Server에 접속을 시도 — .swf가 다운로드된 서버의 843번 포트로 접속해서 소켓 정책에 대한 다운로드를 요구
- 위가 실패하면 .swf 가 다운로드된 서버로 접속할 때 접속되자마자 해당 소켓으로 xml 기반의 요청을 보낸다
- 모두 없으면 동작중단
Flash Player 새 버젼을 다운로드 받아서 오프라인 인스톨을 하고나서 이 동작을 경험하고 나니 당황스럽다. 다만, 나야 테스트 비슷한 것만 잠시 해주면되니 웹 서버도 파이썬으로 대충 짜고, 소켓 정책 파일 서버도 해당 아티클에서 예제로 — 프로덕션 환경에선 쓸 물건이 아니라고 명시된 — 나온 python daemon을 띄우고 있긴한데.
개발 환경 구성이 좀 문제가 많은거 아닌가. 간단한 서버 — 클라이언트 응용이라도 이 모든 부분이 필요하다. 간단히 mock 객체로 대응시켜서 해결할 수 있는 것도 아니고. Adobe에서 좀 더 근본적인 정책 수정이 필요한게 아닐까.