【问题标题】:Node JS Chat - Tell if navigation to page or closing windowNode JS Chat - 判断导航到页面还是关闭窗口
【发布时间】:2011-08-27 11:38:52
【问题描述】:
我正在向我的网站添加一个 Node JS 聊天。目前,如果用户使用以下 JQuery 方法关闭窗口,我将从聊天中清除用户:
$(window).unload(function () {
jQuery.get("/leave", {id: session.id});
});
这很好用,告诉节点 JS 服务器用户已经关闭了窗口,但是如果用户导航到网站上的另一个页面,这也会将用户从聊天室中删除。有没有办法我可以判断他们是否转到域上的另一个页面而不是将他们从聊天中删除?当他们导航到另一个页面时,它被视为正在关闭窗口。
干杯
【问题讨论】:
标签:
javascript
jquery
node.js
navigation
【解决方案1】:
检查用户何时离开服务器而不是客户端的聊天。
我能看到的唯一问题是,除非您使用 JavaScript 加载页面,否则您的用户每次浏览网站时都会离开并重新进入聊天。
您可以通过在断开连接部分设置超时来解决此问题。这不是一个完美的解决方案,但它适用于大多数情况。
如果您使用的是socket.io,这里有一些服务器代码:
socket.on('connection', function (client) {
client.on('disconnect', function () {
client.broadcast({ action: "quit", clientId: client.sessionId });
});
});
您可以在客户端检查action === "quit" 并采取适当的措施。