2009-08-31 6 views
0

사용자가 클라이언트로 플렉스 응용 프로그램을 사용하여 온라인으로 서로 게임을 할 수있는 간단한 보드 게임 (체커의 일종)을 만들려고합니다.플렉스의 HTTP 푸시 사례

저는 서버 측에서 게임을 처리하기 위해 django 응용 프로그램을 사용하고 있습니다. 그리고 한 사람이 움직이면 서버에 보낼 수는 있지만 상대방에게 어떻게 알릴 수 있습니까?

나는 그것을 할 생각입니다 방법은 타이머를 생성하고 요청이 상대 완료 여부를으로 이동 된 서버로 요청을 보내는 것입니다 .... 그러나 여기에서 우리는이 같은 제한이 있습니다

1) 각 클라이언트 것 (예 : 100 개의 클라이언트가있는 경우 서버가 어떻게 작동하는지 잘 모름)

2) 플레이어가 게임 당 제한 시간 (예 : 5 분/1 시간)으로 게임을 선택하면 게임을 표시하는 것이 매우 중요합니다 상황이 보드가 변경되면 (멈춤없이), 타이머는 타이머 이벤트에서만 요청을 보냅니다. 예를 들어, 틱 간격을 5 초로 설정하면 다른 쪽에서 인식하지 못할 5 초를 의미합니다 상황 변화에.

답변

2

이렇게 생각하십시오. 1 초 또는 2 초마다 폴링하면 클라이언트에서주의를 끌지 못할 정도로 빠릅니다. 변경 사항을 확인하는 간단한 REST 요청은 신속하게 이루어지며 최신 웹 서버는 문제없이 100 개의 요청을 처리 할 수 ​​있어야합니다.

지금 타이머로 구현하고 성능 테스트를 실행하고 완료 한 후에 서버에 대해 걱정하십시오.

나중에 걱정할 경우 언제든지 졸업 한 타이머를 사용할 수 있습니다. 예를 들어, 100ms, 200ms, 400ms, 800ms, 1600ms 등을 5 초 후에 뚜껑으로 확인하십시오. 채팅과 유사한 개념을 사용하기 때문에

, 어쩌면 몇 가지 아이디어에 대해이 코드를 살펴 보자 http://anantgarg.com/2009/05/13/gmail-facebook-style-jquery-chat/

2

한 가지 방법은 클라이언트의 TCP Socket을 사용하여 서버에 다시 연결하는 것입니다. 클라이언트가 데이터를 청취하게하고 필요할 때마다 서버가 업데이트를 보내도록하십시오. 방화벽 변경 (사용할 포트 허용) 및 여러 영구 클라이언트 연결을 허용하는 서버가 필요할 수 있습니다. 이것은 고정 된 작은 수의 클라이언트에서만 작동 할 수 있습니다. 다중 연결을 열어두면 서버 오버 헤드가 발생할 수 있기 때문입니다.

방화벽 제한이 있고 HTTP 포트를 사용해야하는 경우 Comet 구현을 조사 할 수 있습니다. 첫 번째 단락에서 제안한 것은 거의 동일합니다 - Comet은 HTTP를 통해이를 수행하고 통신의 일부 측면을 표준화합니다.

2

PyAMF Django HowTo 특히 참조 최선은 Flex 어플리케이션에 통신 할 AMF (AMF를) 사용하는 것 참조 섹션에있는 링크와 예제를 참조하십시오.

+0

방금 ​​django 및 pyAMF를 사용했습니다. 그것은 꽤 흥미로운 일입니다. 그러나 이것이 통신을 훨씬 빠르게 만드는 방법 일 뿐이라는 것을 이해하지만, 어쨌든 타이머를 사용하고 서버의 각 시간을 조금씩 점검해야합니다. –

0

메시지 예제를 Tour de Flex에서 확인하십시오. BlazeDS를 비롯한 다양한 백엔드에서 작동합니다. 그러나 아직 파이썬이 메시징을 구현하고 있는지 확실하지 않습니다.

+0

안녕하세요 제임스, 투어 de flex에서 채팅의 예를 보려면 채팅을 사용하려면 RMTP 가능 서버가 있어야하는지 알고 있습니까? – Rees

+0

블레이즈 DS는 RTMP 대신 스트리밍 HTTP와 롱 폴링 HTTP 채널을 사용합니다.RTMP를 지원하는 오픈 소스 제품 (예 : Red5)이 있습니다. –