2014-06-16 3 views
2

저는 기존 프로젝트에서 Mono 2.10과 함께 SignalR 버전 1.2.1을 사용하려고합니다. 기본적으로 잘 작동합니다. 하지만 Connection과 Disconnection으로 갈 때 그 수는 절대 일치하지 않습니다. 나는 연결된 클라이언트를 추적하고 이에 따라 클라이언트를 업데이트하려고 노력하고 있습니다. 여기에 사용 사례가 있습니다.SignalR 클라이언트 연결이 항상 트리거되지 않습니다.

3 개의 다른 페이지가로드 된 3 개의 프레임이 있습니다. 상단 (실시간 업데이트에 사용), 왼쪽 트리 (페이지 탐색 용) 및 오른쪽 페이지 (실제 내용 페이지) 맨 위 페이지는 영원히 남아있을 것이고, 실시간 값을 지속적으로 업데이트 할 것입니다. (허브에 연결해야합니다.) 마찬가지로 콘텐츠 페이지 (A 페이지) 중 하나에서 SignalR에 연결해야하며이 페이지 A에 연결될 때까지 SignalR이 실시간 정보를 지속적으로 업데이트해야합니다. 허브가 사용자가이 페이지로 이동하여 연결된 클라이언트에 데이터를 계속 입력 할 때 발생합니다. 사용자가 페이지 A를 탐색하거나 브라우저를 닫으면 타이머를 중지해야합니다. 여러 사용자가 페이지 A에 연결되어있는 것과 같은 기회가 있기 때문에 타이머를 중지하기 전에 현재 페이지 A에 클라이언트가 없는지 확인해야합니다.

이 테스트하려면 사용자가 페이지 A에 연결되거나 연결이 끊어졌을 때 카운터를 늘리거나 줄이기위한 정적 변수 만 있습니다.이 작업은 허브의 OnConnected 및 Ondisconnected 이벤트에서 수행합니다. 문제는 항상 OnConnected 이벤트가 발생한다는 것입니다. 하지만 나는 항상 OnDisconnected 이벤트를 받고 있지 않습니다. 내 웹 사이트 내에서 다른 페이지로 이동하는 것과 같은 다양한 시나리오를 시도해 보았습니다. 다시 같은 페이지 A를 다시로드하고 탭/창을 닫는 등의 작업을 시도했지만 페이지 탐색에서 대부분의 시간에 문제가 있습니다. 항상 연결 끊기를 호출하지 않으며 내 카운터는 다시 0으로 내려 오지 않습니다. 시간 초과 설정을 시도했지만 그 또한 나던 연결 끊기 것 같습니다.

아무도 도와 줄 수 있습니까? 클라이언트 분리를 감지하고 타이머를 중지하는 방법은 무엇입니까? 미리 감사드립니다.

추신 : .NET Framework 4.0 요구 사항으로 인해 Signal 1.2.1을 고수해야합니다. 즉, 4.5로 업데이트 할 수 없습니다.

답변

1

서버에 영구 데이터 저장소를 추가하고 서버가 클라이언트의 시간 제한을 관리하도록하고 OnDisconnected 이벤트가 실행되지 않아야한다고 생각합니다. 대답 주셔서 감사합니다

https://github.com/DamianEdwards/NDCLondon2013/tree/master/UserPresence

이 스레드 SignalR OnDisconnected - a reliable way to handle "User is Online" for chatroom?

+0

하이보고 :

은 다음 예제를보십시오. 나는 UserPresence 프로젝트를 살펴보고 그것을 시도했다. 그것은 IIS에서 잘 작동합니다. 그러나 Mono의 경우 하트 비트가 제대로 작동하지 않는 것 같습니다. 항상 ItrackingConnection.IsAlive 속성은 현재 활성 상태가 아닌 연결에 대해서도 마찬가지입니다. 나는이 고역 추적에 대한 좋은 문서를 찾지 못한다. 그걸 좀 도와 주실 수 있습니까? 또는이 하트 비트를 구현하는 다른 메커니즘이 있습니다. 제발 제안 해주세요. 필요한 경우 코드를 게시합니다. – Reuben

+0

나는 모노에 익숙하지 않다. 새로운 질문을 쓰고 모노로 태그달라고한다. –

+0

확실히. 어쨌든 대답 주셔서 감사합니다. – Reuben

관련 문제