Node JS + Socket.IO управление сокетами с помощью localStorage?
Добрый вечер всем, кто читает данный вопрос. Решил писануть диплом на Node + Socket.io. Суть состоит в том, чтобы создать сервис похожий на SoundCloud. Решил использовать сокеты для оперативного обмена данными между сервером и клиентом и (ну и на защите показать что не просто 4 года в универе отсидел). Суть в том, что данным сервисом могут пользоваться как авторизованные так и не авторизованные юзеры ( с разным функционалом). Хотел большую часть обмена информацией сделать на сокетах и тут всплыл вопрос. Когда пользователь открывает или перезагружает страницу создается новый сокет, однако нужно создать функционал, который позволит серверу различать сокеты различных юзеров. Для этого у каждого юзера при первом входе на сайт в localStorage хранится ключ, который представляет собой id сокета под которым зашел, а также массив сокетов которые относятся к этому юзеру + поле которое считает количество сокетов. Все бы неплохо и сервер имеет массив в котором по этому ключу формируется аналогичный массив сокетов, только вот проблема в том, что как я говорил в начале при перезагрузке страницы сокет закрывается и создается новый, а в localStorage он есть и там его надо убрать. Вообще отсюда проблема, как управлять активными сокетами юзера и на сервере и на клиенте. Событие 'disconnect' не успевает по-видимому сработать на клиенте, так как страница перезагружается и скрипт не успевает сработать. Была идея после перезагрузки страницы при событии Onload вызвать функцию через timeout которая сравнит данные на сервере и на клиенте, но на мой взгляд это глупо и после такого мне вместо диплома выдадут его рисунок, а во вторых этот метод не сработает если закрыть все вкладки сайта вообще. Надеюсь на понимание. Сразу извиняюсь за грамматику, руки трясутся предзащита дышит в спину. Если кто то хочет предложит механизм сессий, прошу только объясните как вести сессию с неавторизоваными пользователями. Сразу предупреждаю в этом я новичок и многих вещей не понимаю. Прошу не сердиться а говорить по делу.
С Sharp: да да я еще тот неуч, но в универе ничего толком не рассказывали кроме ООП и то на младших курсах, а про JS Back-End Front-End и прочее так на слайдах показали и все
идентифицируйте клиента не по сокету а по идентификатору, пусть это будет айди первого сокета, запишите его себе и постоянно шлите при новом коннекте как айди пользователя, сокет лишь соединение.
В итоге при каждом новом конекте к вам будет приходить один и тот же айди от одного человека, с ним и работайте.