节点:使用套接字事件区分重新加载事件和浏览器出口
我想运行一些代码,当一个套接字closures,但只有当用户没有重新加载页面…
我有类似的东西
socket.on("close", function() { //do something here });
问题是,这个函数在重载事件中运行以及…我可以暂停它稍后运行的价值在稍后的时间。 我试图在callback中使用一个超时设置,但不能从callback中访问套接字对象。
如果套接字连接在不久之后重新获得,那么防止函数运行的最好方法是什么?
我的想法的主要概念是,你永远不会知道一个用户正在重新加载或断开连接,并且永远不会回来1天左右,有办法检测浏览器正在远离网站导航,但不知道(在服务器方),它会去相同的地址,或不同..
相反,如果任何客户端断开连接,当然断开连接事件将被触发到socket.io服务器的那个套接字,所以考虑到这一点,你可以设置一个会话variables为false,你可以说,播放器是“断开”,所以当客户端的会话“重新连接”又名重新加载,socket.io将触发“连接”事件,但阅读会话variables,你可以说,客户端以前已断开连接,然后再次连接。 时间戳可以应用于此,15分钟后重新连接将不得不加载一些额外的数据等。
所以你可以尝试这个会话(假设你使用快递或其他)
sockets.on("connection",function(socket){ if(session.isAReload){ // this is a reconnection } socket.set("isAReload",session.isAReload /*defaults to false*/); }); sockets.on('close',function(){ socket.get('isAReload',function(err,isAReload){ if(isAReload){ // closed after reconnecting }else{ /* just closed connection, so next time it will be a "reload" or reconnection a timer of lets say 30s could run to ensure that the client is reloading */ session.isAReload=true; } }); })
- Node.JS客户端应用程序模拟1000 / +客户端连接
- 我怎样才能从客户端使用NodeJS的套接字获取标头请求
- nodejs https错误:套接字与本地主机挂起
- 为什么我使用Socket.IO连接NodeJS服务器(Sails)到另一个NodeJS服务器(Express4)失败?
- 有没有更好的方法来监听节点JS中的表更改,而不使用setInterval()函数
- 将消息发送到Socket,从C#客户端到node.js + socket.io服务器
- Miroservices与sockets之间的服务间通信
- 使用UDP套接字的JavaScript应用程序 – NodeJS和SocketIO
- Socket.io本地networking未连接