0

우선, 표준 ASP.NET 웹 사이트를 사용하여 클라이언트/서버 솔루션과 같은 것을 만듭니다.이 방법이 권장되지 않으며 대부분의 사람들이 "COMET!"이라고 외치는 것을 알고 있습니다. 또는 "HTML5 소켓!" -하지만 제발하지 말아요 ;-)! 내가 뭐하는 거지응용 프로그램 범위를 통해 여러 클라이언트로 이벤트가 이동합니까?

...

내가 웹 사이트에 MMORPG를 만드는 오전.

나는 동시에 연락해야하는 여러 고객이 있습니다. 이는 응용 프로그램 범위의 전역 개체에 의해 수행됩니다.

내 문제는

나는 여러 클라이언트에 이벤트를 호출 할 필요가있다. 예를 들어, 공격이 수행되었을 때 그래픽을 업데이트해야합니다. 공격 논리는 전역 개체에서 해결되지만 각 클라이언트는 이에 응답해야합니다.

는 지금은 다음을 수행합니다

fightTrace.Reciever.InvokeMoveEnded(this); 
    fightTrace.FiredBy.InvokeMoveEnded(this); 

무엇 지금 happends 것은 경쟁 조건입니다 (이것은 관찰자 패턴의 일종이다). page_load 이벤트를로드하는 사람은 이러한 이벤트를 모두 가져오고 실행하지 않는 이벤트는 UI에서 변경 사항을 경험하지 않습니다.

그래서 정말 원하는가?

정말 필요한 것은 응용 프로그램 상태를 통해 관찰자 패턴을 만드는 진정하고 좋은 방법입니다. 이 경우 클라이언트 인 모든 "청취자"에게 이벤트를 보내고 업데이트를해야합니다.

이 작업을 수행하는 한 가지 방법은 true/false로 세션을 처리하는 것입니다.하지만 더 좋은 방법이 필요합니다.

감사합니다.

답변

0

컨텍스트를 올바르게 이해하면 응용 프로그램 상태 개체의 상태가 변경 될 때마다 응용 프로그램의 모든 클라이언트를 동기화하려고합니다. 여기서 잊고있는 것은 HTTP 프로토콜의 비 상태 비헤이비어입니다. 일단 응답이 전송되면 연결이 끊어지면 HTTP 요청을 다시 보내서 다시 서비스해야합니다. 그러나 상태 관리 및 Ajax 기반의 짧은 시간과 적절한 업데이트를 사용하여 연결된 환경을 시뮬레이트하여 몇 가지 사항을 에뮬레이트 할 수 있습니다. 그러나 나는 당신이 듣고 싶지 않은 단어를 발성했습니다. 권장하지 않습니다.

대신 할 수있는 것은 응용 프로그램 개체의 상태를 저장하고 요청이 오면 개체의 업데이트 된 상태를 기반으로 응답을 제공하는 것입니다. 클라이언트가 요청을 시작하는 방법.

관련 문제