0
我有一个与socket.io实时聊天的应用程序。我想在Laravel后端的数据库中保存在线/离线状态。对于在线状态我没有问题,但对于离线状态,我没有任何计划。我的前端框架是Angularjs 1.x,并使用JWT进行身份验证。用socket.io向Laravel发送用户的在线/离线状态
事实上,当用户关闭更改路由浏览器和emit
这些用户状态的所有用户时,我想要在数据库中保存离线用户状态?
我有一个与socket.io实时聊天的应用程序。我想在Laravel后端的数据库中保存在线/离线状态。对于在线状态我没有问题,但对于离线状态,我没有任何计划。我的前端框架是Angularjs 1.x,并使用JWT进行身份验证。用socket.io向Laravel发送用户的在线/离线状态
事实上,当用户关闭更改路由浏览器和emit
这些用户状态的所有用户时,我想要在数据库中保存离线用户状态?
一个可能的解决方案就是对socket.io服务器端事件做出反应,比如监听套接字连接和断开连接事件。
这将是最简单的解决方案,当您的服务器崩溃并且您从未收到断开连接事件时会出现问题。为了避免这种问题,您可以创建间隔检查,每隔一分钟检查打开的套接字和用户在数据库中打开/关闭,并在更改时更新。
客户端:
var socket = io("http://127.0.0.1:3000/", { query: "id=434354fds43" });
服务器端:
var io = require('socket.io')(80);
var users = {};
io.use(function (socket, next) {
console.log('Query: ', socket.handshake.query);
var id = socket.handshake.query.id;
if (id) {
users[socket.id] = id;
return next();
}
// call next() with an Error if you need to reject the connection.
next(new Error('Authentication error'));
});
io.on('connection', function (socket) {
// New connection, get the ID from map
var id = socket.id;
socket.on('disconnect', function() {
// User left
delete users[id];
});
});
我需要通过用户名在'socket.server.js'断开事件。如何从client.js传递参数 –
添加示例如何将数据从客户端传递到服务器,例如用户标识。 –