Socket.io :断开连接后重新连接时如何执行某些操作
Socket.io : How to perform certain action while reconnecting after disconnection?
我正在使用node.js和 socket.io 来构建游戏。
我有如下代码.游戏很简单。一旦连接到服务器,它就会开始执行一些动画,并且会保持动画。
我想确保如果互联网连接中断或服务器断开连接,游戏会正常失败。一旦连接恢复,游戏就会恢复。
animate 函数从服务器获取内容。因此,如果没有连接,它将无法正常工作。我希望 animate 函数仅在有连接时才执行。
所以我引入了一个名为 connected 的变量,它应该保存连接的状态。 如果 conncted=false,我停止动画。
但是现在问题本身 socket.io 尝试重新连接几次.如何在重新连接过程中将连接设置为 false ?
游戏.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('重新连接')获得。因此,只需在此处包含对动画的调用。
只有当从客户端调用了socket.connect时,连接才会自动恢复,因此必须再次调用socket.connect()。
相关文章:
- 单击元素两次后执行操作
- 如何在mvc3中执行操作而不更改当前页面
- jQuery onunload在按下按钮时执行操作
- 如果DOM发生更改,您将如何执行操作
- 在执行所有回调函数后执行操作
- JavaScript 对输入框执行操作
- 如何根据各种复选框状态执行操作
- 对页面重新加载 Jquery 执行操作
- jQuery如果大于则执行操作,但只执行一次
- ngStorage是否异步执行操作
- 如何逐一执行操作
- 只有当输入文本是example.com这样的域时才执行操作
- Javascript数学不起作用,更好的方式来执行操作
- Qubit在控制台中执行操作
- 停止setInterval,直到未执行操作
- 我如何使用javascript对音频标记执行操作
- JS 函数将对象作为输入,并返回一个对象,该对象对作为参数传递的对象执行操作
- 单击时执行操作多个具有相同类的 href
- 在 JavaScript 中传递指定秒数后如何执行操作
- 如何在对用户控件执行操作后调用 Web 服务