Счетчик новых сообщений (webSocket java)
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Добрый день. Прошу совета или идею. Сразу скажу что я начинающий java developer, для опыта пишу свой домашний онлайн проект.
Перейду к делу. В проект необходимо добавить, так сказать, чат.
Что имеем. Несколько страниц, с кнопкой чат, а в скобках — кол-во новых сообщений. Перешли, выбрали нужного человека, отписались(оставили закрытым, открытым — не важно). У того человека, которому писали, должно увеличится кол-во новых сообщений вне зависимости от того на какой странице он находится. Всё это планирую делать на websockets.
Реализовать чат, в принципе сложно но можно, инфы в инете хватает.
Реализовать онлайн обновление счетчика сообщений можно через аякс запросы, но хочется сразу делать правильно.
Есть идея сделать так:
1. На каждой страннице джаваскриптом создаётся вебсокет.
Вот тут вопрос, при переходе со станицы на страницу, один закрывается, второй открывается, на сколько это затратно по ресурсам?
2.В идеале есть один серверный вебсокет на все страницы. Тут сразу же вопрос, можно ли? Если нет, то два вебсокета один — для чата, второй — для остальных страниц. Совсем не хочется — на каждую страницу свой вебсокет.
3.Так как при переходе со страницы на страницу, вебсокеты закрываются — открываются, то в вебсокеты из (2) добавить приватное поле — объект(сингельтон), который будет хранить список юзеров онлайн (при закрытии вебсокета, пользователь удаляется, при открытии — добавляется).
4. При отправке сообщения, в этом списке ищется нужный пользователь, в случае, если он найден, то обновляется либо кол-во сообщений, либо добавляется сообщение в чат, в зависимости на какой странице он находится.
Тут тоже вопрос, если он открыл сразу две страницы, можно конечно в сингельтон запихнуть Юзер+лист вебсокетов и дергать необходимые функции вебсокетов, но возможно ли это?
Моя мысль хоть немного идет в правильном направлении или можно как-то всё сделать проще?
Инфы в инете не нашел(
П.с. в проекте пользуюсь java8, maven, tomcat8 и Spring Framework.
11 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів