Во-первых, это два разных вопроса.
По поводу мигания вам уже написали.
А вот по поводу получения уведомления есть разные способы, все они потребуют фоновых запросов, чтобы не блокировать вкладку.
Простейший пример - polling. Каждые несколько секунд шлем запрос на сервер "а есть ли новые сообщения?", на что сервер отвечает либо "нету" либо отдаёт список новых сообщений. Просто, но грузит сеть, жрёт батарейку, грузит сервер.
Чуть сложнее - long polling. Мы шлём запрос "есть ли новые сообщения?" на сервер с длинным таймаутом, скажем, несколько минут. Если сообщений нет, сервер молчит, но запрос не прерывает. Он только у себя время от времени проверяет их наличие. Как только сообщение появилось, сервер шлёт ответ и закрывает соединение.
Когда клиент получил ответ или когда случился таймаут, клиент запускает новое соединение и снова ждёт ответа.
Ну или использовать web sockets - ЕМНИП, когда соединение установлено, сервер может уже послать что-то по своей инициативе. Но это нужно изучать.