Node.js-套接字断开事件无法正常工作

圣彼得

在我的Node应用程序中,我正在使用socket.iowebsocket功能。

为了让客户端知道服务器何时不可用,我使用以下代码:

socket.on('disconnect', function(){
        //show error to client
    });

效果很好,但有讨厌的副作用。每次我单击链接以离开页面(或只是重新加载页面)时,都会弹出该消息-因为客户端断开了连接。我当然不希望每次访问者单击链接时都显示一条消息,说“服务器不可用”。

我可以在错误消息上设置超时,使浏览器有时间在错误显示之前简单地离开。但是您会承认这是一个破旧的解决方案。另外,将有两个问题:

1)如果需要实际显示错误消息,则该错误消息将被超时量延迟,从而使用户的应用程序无法正常运行,并且在此间隔内没有任何通知

2)它不适用于页面重新加载(我认为)

无论如何,总有一种更好的方法。对?

注意:这是Firefox中的问题,但不是Chrome。尚未测试其他浏览器。Firefox还在控制台中显示一条错误消息,指出websocket连接已中断,我倾向于认为这两个问题是常见原因。我已经阅读了很多有关此控制台错误的问题和答案,但似乎没有一个适用于我的情况。

丰科德巴特

我以前碰到过这个。

您想知道用户何时离开页面,并且不想弹出错误。

用于onbeforeunload在他们离开时发出信号,然后只需设置一个布尔值,以使socket.io不会触发错误。

window.onbeforeunload = function(){
  window.unloading = true;
  return; // don't return a string here or it will pop up asking user if they want to navigate away.
}

socket.on('disconnect', function(){
  // setTimeout might be optional depending on when onbeforeunload is called
  setTimeout(function(){
    if (!window.unloading)
      //show error to client 
  }, 10); // 10 ms should be long enough for onbeforeunload, and short enough so your real disconnects don't wait
});

用户尝试离开时,在调用卸载之前打开。

通常,它用于调用一条消息,询问用户是否希望离开,但是您可以设置一个变量,表明断开连接没有错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Node.js 断开连接期间无法记录套接字 ID

来自分类Dev

Node.JS 原始套接字:如何重复连接断开?

来自分类Dev

从Node.js代码引发套接字事件

来自分类Dev

emailjs无法正常工作[node js]

来自分类Dev

Node.js要求无法正常工作

来自分类Dev

Node.js-WebSocket节点模块:如何使多客户端套接字服务器正常工作?

来自分类Dev

断开node.js中以前的客户端socket.io套接字的连接

来自分类Dev

Flutter套接字IO无法连接到Node JS套接字IO服务器

来自分类Dev

Node.js套接字连接错误

来自分类Dev

Node js的多个路由获取套接字

来自分类Dev

Laravel Node.js套接字IO

来自分类Dev

node.js string.replace无法正常工作?

来自分类Dev

Node.js子域无法正常工作?

来自分类Dev

req.files无法正常工作node.js-表达

来自分类Dev

媒体查询在Node.js中无法正常工作

来自分类Dev

Node.js模块在不同设备中无法正常工作

来自分类Dev

带有node.js的cloudinary作物无法正常工作?

来自分类Dev

回调无法正常工作node.js

来自分类Dev

For循环在Node.js中无法正常工作

来自分类Dev

Node.js中的HTTP请求无法正常工作?

来自分类Dev

node.js 13-导入无法正常工作

来自分类Dev

使用node.js创建的端点无法正常工作?

来自分类Dev

Node.js承诺异步/等待无法正常工作

来自分类Dev

for循环在Node.js中无法正常工作

来自分类Dev

jQuery发现无法在Node.js中正常工作

来自分类Dev

为什么Node js res.send无法正常工作?

来自分类Dev

Node.js / Express路由无法正常工作

来自分类Dev

Node.js异步系列无法正常工作

来自分类Dev

Node.js SAML注销无法正常工作-saml + adfs