Sinatra을 사용하여 채팅방을 처음부터 만들려고합니다. 사용자가 페이지를 떠날 때를 감지해야합니다. 처음에는 Javascript onbeforeunload
함수를 사용하려고 생각했지만 사용자는 실제로 서버에 알리지 않고 떠나거나 떠날 수있었습니다.사용자가 이벤트 스트림을 떠날 때 감지합니다.
스트림 부분에 대한 내 코드는 다음과 같습니다 다음시나 예제 파일 중 하나에 따르면
get '/stream', :provides => 'text/event-stream' do
stream :keep_open do |out|
connections << out
end
end
, 기본적으로 채팅방을 만들어 chat.rb
는, 그들이 사용하는
out.callback do
connections.delete(out)
end
하지만, 테스트로 페이지를 닫을 때 내 테스트에서이 코드는 실행되지 않았습니다. (예를 들어, 코드가 실행되고 콘솔에 출력 된 내용이없는 경우 콘솔에 무엇인가 puts
이 있습니다.)
사용자가 스트림을 떠난 경우보다 안정적인 방법으로 검색 할 수 있습니까?
또한 socket.io (클라이언트 측) 또는 다른 것을 사용하지 않지만 문제가 해결되면 공개됩니다.
및 sinata 버전 :
나는 아이디어를 설명하기 위해 약간에게 chat.rb 적응? –@SirScript 저는 Sinatra 1.4.2 – Piccolo
http://www.sinatrarb.com/intro.html을 사용합니다 : "WEBRick과 같은 일부 서버는 스트리밍을 전혀 지원하지 않을 수도 있습니다." – utapyngo