2017-03-04 8 views
0

현재 사용자를 표시해야하는 채팅 응용 프로그램을 만들고 있는데 사용자가 로그인하거나 로그 아웃 할 때 값이 1에서 0 사이로 전환되는 'IsOnline'열이 있습니다. 현재 온라인 상태 인 최신 사용자를 얻으려면 매 15 초마다 api를 누르는 기능이 필요합니다. 나는 signalr과 SQL 의존성을 지원하지 않는 엔티티 프레임 워크를 사용하고 있으므로이 방법을 사용하기로 결정했습니다. 세션에 사용자가있을 때마다 다른 crud 작업을 방해하지 않도록 15 초마다 별도의 스레드에서 실행되는 메서드를 어떻게 가질 수 있습니까?채팅 응용 프로그램 용 타이머 기능

답변

1

15 초 후 폴링은 특히 통화가 DB에있는 경우 좋은 해결책이 아닙니다. 이 접근 방식의 대기 시간을 생각해보십시오. DB를 15 초 후에 호출하는 대신 다른 접근법을 찾아야한다고 생각합니다.

온라인/오프라인을 확인하려면 Db (1 시간 후 지속되거나 DB에 보관하려는 경우 지속)보다 상태를 메모리에 유지하십시오.

+0

다른 접근 방식? 당신이 여기 어떤 방향으로 나를 가르키면 도움이 될 것입니다. –

1

메모리에 상태를 저장합니다 (예 : memcached 또는 redis). 클라이언트에게 15 초마다 요청을 발행하게하십시오. 온라인 상태는 일시적이므로 DB에 저장할 필요가 없습니다.

앱의 아키텍처를 설명하지 않았기 때문에 심층적으로 조언하기가 어렵습니다.

일반적으로 존재 알림의 효과적인 적용은 까다 롭습니다. 자기 자신을 개발하는 대신 선반에서 뭔가를 가져가는 것이 더 쉬울 수도 있습니다.