我正在尝试使用Sinatra从头开始制作聊天室。我需要检测用户何时离开页面。起初,我在考虑使用 Javascriptonbeforeunload
函数,但后来用户实际上可以假装离开或离开而不通知服务器。
我的流部分代码如下所示:
get '/stream', :provides => 'text/event-stream' do
stream :keep_open do |out|
connections << out
end
end
根据 Sinatra 示例文件之一chat.rb
,它基本上是一个聊天室,他们使用
out.callback do
connections.delete(out)
end
但在我的测试中,当我关闭页面作为测试时它没有触发(在我的例子中,我有它puts
如果代码被触发,我在控制台中有一些东西,并且没有任何东西输出到控制台)。
是否有更可靠的方法来检测用户是否离开流?
另外,我没有使用socket.io(客户端)或任何东西,但如果它解决了我的问题,我愿意接受。