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