2011-07-03 4 views
-1

rails3 앱이 있는데 현재 온라인 상태 인 사람의 목록을보고 싶습니다. 예를 들어 user1, ip address, country. 그런 다음 내 사이트를 떠날 때까지이 사용자에게 채팅/푸시 메시지를 열 수 있기를 원합니다.rails3 앱에서 사이트의 현재 온라인 사용자와 만나고 이야기하십시오.

현재 누가 사이트에 현재 있는지 모니터링하고 떠날 때 목록에서 즉시 제거 할 수 있습니까?

다음 나는 faye pub/sub를 통해 그들과 이야기 할 수 있습니다.

아무도 이런 짓을하지 않았습니까?

덕분에 릭

답변

1

현재 누가 사이트에 현재 있는지 모니터링하고 퇴장시 목록에서 즉시 제거 할 수 있습니까?

HTTP를 사용하면 브라우저에서 "즉시"할 수 없습니다. 거의 모든 솔루션은 하트 비트 기술을 사용합니다. 모든 X 초마다 사용자가 온라인 상태인지 알려주는 요청 (ajax 사용)이 브라우저에서 전송됩니다. x 하트 비트에서 사용자의 의견을 듣지 못했다면 사용자는 연결이 끊긴 것으로 간주합니다. 심지어 페이스 북에서도 이것을 사용합니다. 정말로 중요한 경우가 아니라면 즉시 요구 사항을 삭제하도록 권할 것입니다.

또 다른 방법은 서버에 소켓 연결을 만들기 위해 Flash 또는 Silverlight를 구현하는 것입니다. 그러나 서버에 대한 수요가 높고 많은 사람들이 사이트에 있다면 포트 등으로 문제가 발생할 것입니다.

+0

"즉시"할 수없는 이유는 HTTP (S)가 무국적이라는 것입니다. 따라서 어떤 시점에서 서버는 주어진 클라이언트의 마지막 요청에 대해서만 알 수 있습니다. 이것이 올바른 해결책입니다. – Midwire

0

난이 너무 많은 루비 온 레일과 관련이없는 생각 ...하지만이 스크립트 언어 만에 HTTP를에서 구현하는 것은 매우 어렵다. 서버는 사용자가 브라우저를 닫았는지 여부를 알지 못합니다. 어떤 서버는 요청 된 페이지 데이터를 사용자에게 보내고 연결을 닫는 것입니다.

일을 쉽게하기 위해 Ajax 또는 Flash를 통합해야합니다. 일부 사람들이 플래시로 채팅 프로그램을 개발하는 것을 보았습니다. 다른 AJAX 구현 채팅 프로그램보다 훨씬 잘 작동하는 것 같습니다.

채팅은 사용자가 링크를 클릭 할 때 페이지가 다시로드되기 때문에 웹 탐색 컨텍스트에서 매우 바람직하지 않습니다. 채팅 기능 만 지원하는 응용 프로그램을 개발하려는 경우 Ruby on Rails가 아닌 다른 것을보고 싶을 것입니다. 예를 들어, node.js이 좋습니다.

+0

정말 대답하지 않았습니다. 현재 사이트에있는 사람을 정확히 모니터하고 떠날 때 즉시 목록에서 제거 할 수 있습니까? 나는 faye와 아무 문제도 채팅을 할 수 없다. 어쨌든 고마워요. – rick