Skip to content

Commit

Permalink
feature: session persistence (24 hours)
Browse files Browse the repository at this point in the history
  • Loading branch information
lamorbidamacchina committed Nov 24, 2024
1 parent 5f8a308 commit 9006323
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 5 deletions.
36 changes: 35 additions & 1 deletion public/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,44 @@ function verifyKeyIntegrity(publicKey, userId) {
}
}

// Add session management
function getOrCreateSessionData() {
const sessionData = localStorage.getItem('shushSession');
if (sessionData) {
const parsed = JSON.parse(sessionData);
// Add additional checks
if (Date.now() - parsed.timestamp < 24 * 60 * 60 * 1000 &&
parsed.userAgent === navigator.userAgent) {
return parsed;
}
localStorage.removeItem('shushSession');
}
return null;
}

// Connection established
socket.on('connect', () => {
console.log('Connected to server with ID:', socket.id);
socket.emit('register', myPublicKey);

// Get existing session or null
const sessionData = getOrCreateSessionData();

// Send registration with optional displayName
socket.emit('register', {
publicKey: myPublicKey,
sessionData: sessionData
});
});

// Add handler for successful registration
socket.on('registration-complete', (userData) => {
// Save new session data
const sessionData = {
displayName: userData.displayName,
timestamp: Date.now(),
userAgent: navigator.userAgent
};
localStorage.setItem('shushSession', JSON.stringify(sessionData));
});

// Users list update
Expand Down
16 changes: 12 additions & 4 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,22 @@ io.on('connection', (socket) => {
console.log('New connected user:', socket.id);

// User registration handling
socket.on('register', (publicKey) => {
const displayName = generateRandomName();
socket.on('register', ({ publicKey, sessionData }) => {
// Use existing display name if session is valid
const displayName = sessionData ? sessionData.displayName : generateRandomName();

console.log('User registered:', displayName, '(', socket.id, ')');
connectedUsers.set(socket.id, {

const userData = {
socketId: socket.id,
publicKey: publicKey,
displayName: displayName
});
};

connectedUsers.set(socket.id, userData);

// Send registration confirmation to the client
socket.emit('registration-complete', userData);

// Send updated list to all
io.emit('users-update', Array.from(connectedUsers.values()));
Expand Down

0 comments on commit 9006323

Please sign in to comment.