我正在创建一个Web应用程序,允许游戏玩家找到处于类似水平的伙伴。我正在使用Ruby on Rails5。
这样做,我创建了一个玩家模型来存储玩家数据。该播放器模型充当我的匹配算法通过队列查找匹配项的队列。
一个障碍是游戏者必须在排队时保持浏览器打开。如果玩家关闭了我们的应用程序或互联网连接断开,则必须将玩家从队列中删除(=破坏玩家的玩家模型)。
我首先使用javascript'onbeforeload'或'navigator.offline'解决了问题。但是,这在导轨上不起作用。
还有其他方法可以跟踪玩家的currnet在线状态吗?
与我的项目的链接位于my github。
编辑
我尝试使用pusher检查其连接状态以删除模型。
pusher.connection.bind('unavailable', function() {
<% puts "unavailable" %>
<% Player.find_by_user_name(current_user.user_name).try(:destroy) %>
});
pusher.connection.bind('disconnected', function() {
<% puts "disconnected" %>
<% Player.find_by_user_name(current_user.user_name).try(:destroy) %>
});
但是,它仅在重新加载页面后仍在删除。即使关闭浏览器,推送器也不会断开连接。