2014-07-13 2 views
1

저는 SingalR OWIN 프로젝트를 사용하고 있으며 한 번에 limit the number of connected clients을보고 있습니다.SignalR 한도 연결 수

I가 연결 수를 추적하는 다음 코드를

public override Task OnConnected() 
if (ConnectionManager.IsAllowed) // checks number of connected clients < 3 
{ 
    ConnectionManager.connectedClients++; 
    _log.Debug("Connected = " + ConnectionManager.connectedClients); 
    return base.OnConnected(); 
} 
else 
{ 
    return null; // I thought this would reject the incoming connection 
        // but it does not. 
} 
} 

사람이 내가 들어오는 새 연결을 거부하기 위해 무엇을해야하는지 알고 있나요? 온라인에서 예제를 찾을 수 없습니다.

어떤 제안이 좋을 것입니다.

감사합니다. 경우

답변

0

내가 SignalR의 전문가 아니에요, 나는 기꺼이이 제거거야이 방법으로 구축했다,하지만 난 그냥 내 기능은 연결이 거부되었다는 것을 어떻게 든 표시 할 것 다른 사람. 예를 들어 bool을 반환하고 클라이언트 측에서 허용 여부를 확인한 다음 적절하게 조치 할 수 있습니다. 연결된 경우 반환해야하는 것이 있으면 bool IsSuccess 및 반환 할 유형의 속성을 포함하는 복합 유형을 반환 한 다음 클라이언트 측에서 IsSuccess이 true인지 다시 확인하십시오. 어쨌든, SignalR이 적극적으로 연결을 거부하는 것이 그 이상을 할 수있는 것과는 다릅니다. 물론 제한에 도달 한 후 클라이언트가 연결되면 404를 던져보고 싶은 경우가 아니라면.

연결 제한을 설정하는 Web.config를 통해 몇 가지 기본 방법이 있다면 그것은 나를 놀라게 않을 것이다,하지만 나는 그것을 할 것입니다 방법입니다. 그렇다면 통제력도 조금 더 있습니다. 예를 들어 원한다면 클라이언트에게 연결된 사람의 수를 알릴 수 있습니다. 예로서.

편집 :

나는 원래 당신이 OnConnected 방법에 있던 몰랐어요. 다시 말하지만, 더 좋은 옵션이 있다고 생각할 수 있습니다. 예를 들어 그 메소드에서 예외를 던지면 어떤 일이 발생할지 모릅니다. 그러나 실제로 본 SignalR의 실제 구현에서, 여러분이 직접 작성하는 일종의 "입력 메소드"가 있습니다. 예를 들어, 클라이언트는 일반적인 예와 같이 특정 채팅방에 전화를 걸고 요청할 수 있습니다. 내 수표를 개인적으로 거기에 넣었습니다. 그런 다음 입력이 허용되는지 여부에 대해 간단히 bool을 반환 할 수 있습니다. 당신은 이미 그 중 하나가 없더라도

, 당신은 항상 BeginListening 위해 뭔가를 추가하고이 수표를 할 수 있습니다.

+1

응답 해 주셔서 감사합니다. 어떻게 OnConnected()가 작업 유형을 반환하는지 알 수 있습니까? –

+0

답변에 약간을 추가했습니다. –

+0

제안을 주셔서 감사 드리며, 위의 사항을 구현하고 onConnected 이벤트에서 승인 책임을 제거했습니다. –