2010-01-25 7 views
3

저는 현재 기존 서비스/표준을 위해 플래시 소켓 클라이언트를 작업 중입니다. 이 서비스는 TCP 흐름 제어를 사용하여 자체를 조절하고 플래시 소켓은 가능한 한 빨리 모든 것을 읽습니다. 취하는만큼 빨리 처리 할 수는 없지만 소켓의 bytesAvailable은 계속 증가하고 서버는 계속 증가합니다 클라이언트가 뒤 떨어진 것을 결코 알지 못합니다.AS3의 TCP 흐름 제어?

간단히 말해서, 은 Flash Socket 객체의 bytesAvailable 크기를 제한하거나 다른 방법으로 조절할 수있는 방법이 있습니까?

주 : 서버를 재 작성하는 것은이 표준 서버 측 변경

+0

나는 그것을 위해 당신을 위해 그것을하고 싶지 않았다. 플렉스 3에 플렉스 3 태그를 다시 붙이면 더 많은 사람들이 그 태그를 모니터링하고 있다고 생각할 수도 있습니다. – invertedSpear

+0

감사합니다. 좋은 전화 –

답변

2

연구를 마친 후 Actionscript Socket 클래스가 CPU가 시스템에서 초과 된 경우 (리소스가 부족하거나 응답 시간이 느린 경우) 조절 기능이 시작됨을 발견했습니다.

이것은 앱이 "원하는"초당 프레임 수와 얼마나 많은 bytesAvailable이 소켓에 있는지 균형을 잡을 수 있도록 코드를 작성했기 때문에 실제로 문제가 해결되었습니다. bytesAvailable이 너무 높으면 앱이 논스톱을 처리하고 CPU를 100 %로 구동하여 궁극적으로 소켓 속도가 느려집니다.

0

가 내가 생각하지 필요한 경우 클라이언트의 유틸리티가 상당히 저하의로 현재 시간에 실행 가능한 옵션이 아니다 가능한. AS3에는 TCP 수준의 바이트로 조작 할 수있는 저수준 API가 없습니다. 하지만 더 높은 수준의 스로틀을 구현할 수 있습니다. 예 : 바이트를 Socket의 byteArray에 넣기 전에 마지막 몇 초 동안 몇 개의 데이터를 넣었는지 확인합니다. 이 값이 너무 높으면 - 연기 작업.

+0

불행히도 구현 제한으로 인해 서버 부분을 만질 수는 없습니다. 어떤 종류의 릴레이/프록시 서버를 사용하지 않으려 고 노력하고 있지만 필연적 인 일입니다. –

관련 문제