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傳遞參數 –
添加示例如何將數據從客戶端傳遞到服務器,例如用戶標識。 –