【发布时间】:2020-01-19 21:49:29
【问题描述】:
我有包含活跃用户列表的管理页面。它可以工作,但是当“userX”更改到另一个页面时,所有客户端都会更新,活动用户列表中没有“userX”。 1 秒前“userX”返回活跃用户列表。
服务器控制台
UserX connected...
UserX disconnected... (UserX change to another page inside application)
Reason: transport close
UserX connected... (Because main layout force connection)
当“userX”切换到另一个页面时,nodejs 触发 socket.on('disconnect',function(){}) 动作。 这会导致 客户端断开连接...(UserX 更改为应用程序内的另一个页面) 原因:交通不便
服务器代码
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(81, function () {
console.log('NodeJs listening on port:81');
});
io.on('connection', function (socket) {
console.log('New client connected...');
socket.on('disconnect', function (reason) {
console.log('Client disconnected...');
console.log('Reason: ' + reason);
});
});
页面代码
<script type="text/javascript">
var socket = io(':81', {forceNew: true});
</script>
如何让用户在页面之间保持连接并仅在浏览器关闭或用户退出时触发断开连接?
【问题讨论】:
标签: node.js sockets express socket.io