Я пытаюсь сохранить сеансы на стороне сервера, даже после отключения клиента.
У меня есть стандартный Sock JS client и sock js -node setup.
Идея состоит в том, что если клиент подключается, то отключается, а затем повторно подключается к серверу; клиент должен возвращать один и тот же сеанс с сервера при каждом подключении.
Чтобы попытаться добиться этого, в настоящее время я генерирую строку произвольного идентификатора сеанса на стороне клиента, а затем передаю этот идентификатор носку JS server.
Проблема, с которой я сталкиваюсь, заключается в том, что сервер возвращает null , когда я передаю sessionID на сервер, чтобы попытаться получить существующий сеанс.
As Насколько я понимаю, именно так Sock JS реализует сохранение сеанса: https://github.com/sockjs/sockjs-node/blob/master/lib/session.js
Я не совсем понимаю, почему я возвращаюсь null сеанс должен поддерживаться на сервере ...?
Вот так я сейчас отправляю ID на сервер Sock JS:
const socket = SockJS(`https://my-server.com/socket/auth/login`, null, {
sessionId: () => {
// (1) Check if a session ID already exhists
let sessionId = localStorage.getItem('sockjsSessionId');
if(sessionId === null || sessionId === undefined) {
// (2) If Session ID does not exist, create a random ID.
sessionId = getRandomStringWithLength(8);
localStorage.setItem('sockjsSessionId', sessionId);
}
// (3) Pass session id to SockJS Server
return sessionId;
}
});
Вот так я сейчас пытается получить тот же сеанс на сервере:
if (sessionId !== null && typeof sessionId !== 'undefined') {
const socketSession: SockJSSession | null = SockJSSession.bySessionId(sessionId);
console.log('found sockjs session connection', socketSession);
if (socketSession !== null) {
socketSession.connection.write(JSON.stringify(response));
}
}