2017-10-03 1 views
-1

두 명이 온라인 게임에서 signalR을 사용하고 있습니다. 플레이어는 자신의 턴에 최대 30 초 동안 자신의 행동을 수행해야하며, 그렇지 않으면 그는 게임을 풀 것입니다. 클라이언트가 특정 시간에 SignalR을 호출했는지 확인하는 방법은 무엇입니까?

나는 시작하기 위해 클라이언트에게 :

public class GameHub : Hub 
{ 
    public void AcceptRequest() 
    { 
     Clients.Client("connectionId").StartYourTurn(); 
    } 

    public void Action(string id) 
    { 
      // player calls this method and I save it in a db. 
    } 
} 

그러나 클라이언트가 SignalR 측에서 30 초 아무것도하지 않은 경우 내가 감지 할 수있는 방법? 감사.

+0

지금까지 해보신 것은 무엇입니까? 그 순간 코드 작성 서비스를 통해 코드를 작성해 주시길 바랍니다. –

+0

@CodeWarrior 다운 투표에 대한 설명을 주셔서 감사합니다. 그러나 내가 시도한 것에 의해 당신이 의미하는 바가 명확하지 않습니다. 나는'SignalR'을 설정하고 클라이언트에게 시작 신호를 보냅니다. 그러면 나는 30 초 동안 signalR이라는 클라이언트를 체크하는 법을 알아야한다. 그게 내가 여기 온 이유야. – Blendester

+0

타이머 사이에 30 초 타이머를 설정하면 타이머가 끝날 때 클라이언트의 시간을 알려주는 서버의 다른 요청을 실행 중지합니다. –

답변

1

본인의 질문에 대한 답변과 본질적으로 동일한 답변입니다.

초당 클라이언트에게 브로드 캐스팅되는 30 초 카운트 다운 타이머를 시작하십시오. 이번에는 아무 것도 보여줄 필요가 없습니다. 시간이 다 된 것을 경고하고 싶을 때가 있습니다. 10 초 후에 UI의 어딘가에서 색상 변경과 같은 시각적 경고 또는 남은 10 초를 표시한다고 가정 해 보겠습니다. 그러면 5, 4, 3, 2, 1에서 다시 ... 색상이 점차 적색에 가까워 질 수도 있습니다 (의미 시간이 길어짐).

그 코드를 게시 할 수 없다면 @CodeWarrior가 언급 한 것으로 보이는 코드를 게시하십시오.

+0

감사합니다. 나는이 방법으로 서버에서 무거운 것을 선호하지 않았으며, 매 초마다 클라이언트가 서버에 작업을 전송했는지 여부를 확인해야했습니다. 각 ~ 5 초를 확인하기로 결정했고 클라이언트가 UI 카운트 다운 자체를 담당합니다. – Blendester

+0

클라이언트가 아무 것도 보내지 않았다면 데이터베이스를 확인하지 않고도 아무 것도 알아야합니다. 클라이언트가 작업을 수행 할 때 클라이언트가 허브에서 메소드를 호출해야합니다. –

+0

예 클라이언트가 허브에서 메서드를 호출하지만 이미 시작된 타이머는 어딘가에 저장하지 않고 그 값을 인식 할 수 있습니까? – Blendester

관련 문제