Reactjs 管理用户退出游戏';房间';关于反应?

Reactjs 管理用户退出游戏';房间';关于反应?,reactjs,redux,react-hooks,Reactjs,Redux,React Hooks,这可能看起来很复杂-我正在React上开发一个游戏应用程序,其中包括所有用户加入我项目中的某个。当所有用户都在这条路线上时,游戏将取消暂停,否则游戏将暂停 我的问题是:如果用户离开链接或关闭标签,我怎么能突然暂停游戏?有没有办法在react上主动检查这一点?我认为useEffect钩子可能有用,但我不知道如何实时获取离开网站或关闭标签的用户数量 这里有一些基本的代码来理解我想要什么。我有一个功能性的React组件,当用户加入此链接时,它将托管一个游戏: const GameSession = (

这可能看起来很复杂-我正在React上开发一个游戏应用程序,其中包括所有用户加入我项目中的某个
。当所有用户都在这条路线上时,游戏将取消暂停,否则游戏将暂停

我的问题是:如果用户离开链接或关闭标签,我怎么能突然暂停游戏?有没有办法在react上主动检查这一点?我认为useEffect钩子可能有用,但我不知道如何实时获取离开网站或关闭标签的用户数量

这里有一些基本的代码来理解我想要什么。我有一个功能性的React组件
,当用户加入此链接时,它将托管一个游戏:

const GameSession = ({userRegistered}) =>{

  const [paused, setPaused] = useState(false);

  useEffect(() => {
  // store some user related data in localStorage when the user loads

  }, []);

  useEffect(() => {
  setPaused(numberofUsersInGame === totalUsers ? false : true)
  }, [numberofUsersInGame]);
 /* MY PROBLEM IS IN THIS EFFECT HOOK ABOVE. HOW TO CHECK IF A USER HAS LEFT THIS 
COMPONENT OR PAGE SO I CAN UPDATE numberofUsersInGame ? */

   if(!userRegistered)
   return <Redirect to="/dashboardpage">

   if(paused)               
  return <PausedComponent /> /*this component should fire a return when total
                               number of users registered to this game is not
                               equal to current number of users who are
                               active on the GameSession component (this link)*/

   return (
      <Fragment>
      <GameComponent>
      </Fragment>
      );


};
GameSession.propTypes = {
// PropTypes go here
};
const mapStateToProps = (state) => ({
//states go here
});
export default connect(mapStateToProps, mapDispatchToProps)(GameSession);
constGameSession=({userRegistered})=>{
const[paused,setPaused]=useState(false);
useffect(()=>{
//当用户加载时,在localStorage中存储一些与用户相关的数据
}, []);
useffect(()=>{
setPaused(numberofUsersInGame==totalUsers?false:true)
},[numberofUsersInGame]);
/*我的问题是上面这个效果挂钩。如何检查用户是否留下了这个
组件或页面,以便我可以更新numberofUsersInGame*/
如果(!userregisted)
返回
如果(暂停)
return/*此组件应在总计时触发return
注册到此游戏的用户数不正确
等于当前正在访问的用户数
在GameSession组件上处于活动状态(此链接)*/
返回(
);
};
GameSession.propTypes={
//道具在这里
};
常量mapStateToProps=(状态)=>({
//国家在这里
});
导出默认连接(mapStateToProps、mapDispatchToProps)(GameSession);

您考虑过使用套接字吗?请提供更多信息。所以,我可以帮你。您是否正在为此使用任何服务器?请将您的代码添加到沙盒中,并提供该代码的URL。@ChetanKumar我添加了一些代码以了解更多信息info@MorKadosh还没有。你是说网袋吗?@RahulPillai我是说。他们可以为您提供连接/断开连接的客户的简单指示。您考虑过使用插座吗?请提供更多信息。所以,我可以帮你。您是否正在为此使用任何服务器?请将您的代码添加到沙盒中,并提供该代码的URL。@ChetanKumar我添加了一些代码以了解更多信息info@MorKadosh还没有。你是说网袋吗?@RahulPillai我是说。它们可以方便地指示已连接/断开连接的客户端