Socket.io:断开连接后如何执行某些操作?

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

我有如下的代码。 游戏很简单。 它开始做一些animation,只要它连接到服务器,并保持animation。

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

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

所以我介绍了一个名为connected的variables,它应该保持连接的状态。 如果conncted = false,我停止animation。

但现在问题是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(); } 

您可以使用以下内置函数来了解连接的状态,并相应地定义animation的状态:

 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')提供。 所以在这里只包含对animation的调用。

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