gpt4 book ai didi

node.js - 如何避免浏览器重新加载时出现新的套接字连接?

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:18 25 4
gpt4 key购买 nike

如何避免页面刷新时出现新的套接字连接?我有一个游戏,它在一个房间的两个套接字连接上启动,但在游戏中间我刷新页面,游戏进度丢失,如果有新的对手在等待,则新游戏开始。我希望避免这种情况,有什么想法吗?请帮忙,我真的陷入了这个困境

服务器.js

  function onClientdisconnect() {
console.log('player disconnected with id ' + this.id);
//send message to every connected client except the sender
this.broadcast.to(this.room_id).emit('remove_player', {id: this.id});}

io.on('connection',(socket)=>{
console.log('user connected ' + socket.id);
socket.on('disconnect', onClientdisconnect);

客户端.js

   var socket =io();
// socket connection
socket.on('connect',function(){

socket.emit('new_player_GK',{
id:socket.id
});
console.log('connected');
});

最佳答案

不能,当页面关闭(刷新)时,websocket 连接会自动关闭。

您必须实现自己的 session 逻辑,也许在客户端存储 cookie/localStorage 数据,并在页面加载时恢复(以前的)客户端数据。

如果您的游戏数据存储在服务器上,您必须实现某种身份验证,以便知道游戏数据 X 来自用户 Y,因此当用户 Y(根据 Cookie 进行识别)再次加载页面时,服务器会返回他之前的数据 X

如果您需要更具体的示例,您首先必须解释您希望在页面加载之间保留哪些数据,请记住,不可能保留 Websocket 连接。我建议让你的游戏更像 SPA因此您完全不需要刷新(如果用户故意刷新页面或关闭选项卡,这仍然不会保持进度)。

关于node.js - 如何避免浏览器重新加载时出现新的套接字连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49836254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com