客户端在服务器重新加载时同时重新连接。需要分开他们的连接,为每个

时间:2017-06-23 02:05:11

标签: node.js socket.io multiplayer

// ----------背景故事-------- //

所以我和朋友一起做乒乓球比赛。我们将游戏构建为工作客户端,但在学习了一些后端后,我们花了整个周末将其转换为运行服务器端并将客户端的对象数据发送到客户端。

目前它的结构是接收客户端对“播放器”分配的请求。当分配了2个玩家时,游戏将开始(服务器端),然后开始向客户端发送对象数据。

用户首次连接时一切正常但问题就出现了。当我进行更改服务器端时,服务器重置(使用nodemon,但这不相关)。 当服务器立即重置两个客户端时,尝试重新连接,当他们这样做时,他们都被指定为播放器1 ,因此游戏会锁定,直到他们刷新页面。

用于在服务器更改可以动态推送的情况下使用的代码,在短暂暂停后(重新连接期间)客户端将继续显示新的更改。这对我们测试时非常有用。现在我必须重置服务器(通过nodemon自动)然后手动刷新每个客户端。

// ------ --------问题//

我的问题是如何让客户端重新连接而不被指定为播放器1(更重要的是让服务器只识别播放器计数为1,因此不会重新初始化游戏)?

我已经尝试将延迟(setTimeout)放在玩家分配上,但很快意识到这是多么徒劳。在同一时间段内重新连接时,两个客户都会遇到任何延迟,因此无论是立即重新连接还是两者都将在未来的某个延迟重新连接都没有区别。

以下是相关分支文件的链接:

ReadMe:这是我写的一篇文章,规定了服务器和客户端之间的步骤和交互。这与代码结构相同

App.js:服务器文件,其中发生客户端/服务器之间的初始交互

ServerMain.js:这是主服务器文件。它在app.js中用作'Main'。游戏是从这个文件中运行/发出的

ClientMain.js:这是为每个连接的客户端提供的主要客户端文件。包含与服务器的所有交互

0 个答案:

没有答案