javascript – Socket.io:如何在断开连接后重新连接时执行某些操作?

我使用node.js和socket.io来构建游戏.

我有如下代码.游戏很简单.它一连接到服务器就开始做一些动画,并保持动画效果.

如果互联网连接断开或服务器断开连接,我想确保游戏正常失败.一旦连接恢复,游戏就会恢复正常.

animate函数从服务器获取内容.因此,如果没有连接,它将无法正常工作.我希望animate函数只在有连接时执行.

所以我介绍了一个名为connected的变量,它应该保存连接的状态.如果conncted = false,我停止动画.

但现在问题是socket.io本身试图重新连接几次.在重新连接过程中如何将连接设置为false?

Game.js

var connected = false;

$(document).ready(function(){

//connect to socket server



socket = io.connect('/gameserver');



socket.on('connect', function() {
    connected = true;
    animate();


});

socket.on('disconnect', function() {
    connected = false;
 socket.connect();

});



});


function animate()

{

....
......
........

if (( connected ) && (..... )) animate();




}

最佳答案 您可以使用以下内置函数来了解连接的状态,并相应地定义动画的状态:

socket.on('disconnect', function(){}); // wait for reconnect, hold animation
socket.on('reconnect', function(){}); // connection restored, restart animation  
socket.on('reconnecting', function( nextRetry ){}); //trying to reconnect, hold animation
socket.on('reconnect_failed', function(){ message("Reconnect Failed"); });// end animation

nextRetry指定尝试连接之前的时间,如果这有助于使用状态更新用户.

此外,在与服务器断开连接时,您无需调用socket.connect().更新后的状态将来自socket.on(‘reconnect’).所以只需在这里包含对动画的调用.

只有从客户端调用了socket.disconnect,才会自动恢复连接,因此必须再次调用socket.connect().

点赞