2012-06-25 6 views
0

사용자는 Google, Facebook 또는 Twitter 계정을 사용하여 Google App Engine에서 실행중인 사이트에 로그인 할 수 있습니다. 사용자의 세션이 이미 구현되었으며 세 인증 공급자 (Google, Facebook, Twitter)가 이미 작동합니다.AppEngine 웹 사이트의 온라인 사용자

내 다음 작업은 사용자가 프로필을 볼 때 온라인 상태인지 확인하는 것입니다. 이 방법을 구현하는 방법? 아이디어가 있으시면 알려주세요. 사용자의 세션 시간이 초과 할 때

session.put("email", email); 

고려해야 할 또 다른 점은 다음과 같습니다 사이트에 사용자 로그인, 나는 그것이 아래와 같은 세션 뭔가 이메일의 저장

또한

. 오랫동안 사이트에서 상호 작용을하지 않아 사용자 세션이 자동으로 시간 만료 (사이트에 제공된 로그 아웃 메뉴/버튼 사용 안함) 한 경우 무언가를 할 수 있습니다.

사용되는 프레임 워크는 Google App Engine에서 실행되는 Struts2입니다.

감사합니다.

+0

이것을 촉진하기 위해 어떤 인증을 사용합니까? 자신이하는 일을 명확히하는 데 도움이되는 관련 코드를 게시 할 수 있습니까? 사용자를 세션에 저장하고 세션이 만료되면 구성에 따라 사용자가 로그인 페이지로 리디렉션되어야합니다. – jmort253

+0

Google의 경우 Google App Engine의 UserService를 사용하고 있습니다. Twitter는 Twitter4j를 사용하고 Facebook은 Facebook API를 사용했습니다. 자신의 사용자 프로필에 대한 엔티티가 있습니다. 사용자가 온라인 상태인지 아니면 현재 사이트를 사용하는지 확인하는 방법에 대한 아이디어가 필요합니다. 나는 사용자를위한 엔티티가 있기 때문에 인증에 의존하지 않는다고 생각합니다. –

+0

코드를 보지 않고도 좋은 대답을 드릴 수는 없습니다. 고양이를 껍질을 벗기는 방법은 여러 가지가 있습니다. 코드 방향으로 향하고있는 방향을 보지 않고 - 코드의 형태로 - 나는 당신에게 완전히 다른 방향으로 당신을 보내는 답을 줄 것입니다. 너 이미 가고있어. 귀하의 질문에 관련 세부 사항을 포함 시키려면 [편집]하십시오. 행운을 빕니다! – jmort253

답변

1

HTTP는 세션 기반이 아니라 요청 기반이므로 사용자가 온라인인지 아닌지를 알 수있는 방법이 없습니다. 간단히 말해서 HTTP에는 '온라인'사용자 개념이 없습니다.

지나치게 복잡하고 높은 오버 헤드 방법은 채널 API와 같은 것을 사용하여 사용자가 페이지 (또는 사이트)를 떠날 때 사용자에게 알리는 것이지만 단순한 기능에 많은 오버 헤드가 발생합니다. 사용자의 브라우저에서 페이지를 열었을 때 정기적으로 핑 (ping)하도록 할 수도 있지만 다시 오버 헤드와 추가 트래픽이 발생합니다.

더 일반적인 방법은 사용자를 데이터 저장소에 저장하는 것입니다 (또는 사용자가 오프라인으로 잘못 표시되면 크게 중요하지 않은 경우 memcache에 저장). 마지막으로 페이지를로드했을 때 기록하고 귀하의 사이트에서 페이지를 가져올 때마다 그런 다음 적절한 시간 간격 (예 : 30 분) 내에 페이지를 검색하면 사용자를 '온라인'으로 표시하고 그렇지 않은 경우 '오프라인'으로 표시합니다.

관련 문제