Это решается не тем способом, который ты хочешь. Сокеты для этого держать — извращение.
Добавь в бэкенд глобальный заголовок, типа "X-Build: 2019-11-07T12:06:40", который будет означать дату сборки бэкенда (придётся при выкатке фронта выкатывать и бэк в одно время). Дату сборки получаешь или из последнего коммита гита (кстати, можно хоть даже хэш коммита вместо даты), или прямо при сборке образа класть файлик с текущей датой. При первом запросе в стейте SPA устанавливаешь дату сборки, все последующие любые запросы в бэк смотришь, не изменился ли заголовок. Если изменился — вот тебе изменения, которые должны повлечь релоад страницы, показывай попапы.
Таким образом, мы не шлём ничего лишнего и не держим бесполезных сокетов.
Но в этом случае, логично, что если не заботиться об обратной совместимости (кстати, теперь ты можешь запросить у API данные нужной версии [конечно же, этот механизм нужно реализовать], т.к. на руках уже есть заголовок даты сборки), то пользователь может получать ошибки. Если нужно избежать этого — можешь поставить слушатель фокуса вкладки браузера и отправлять какой-то запрос-пустышку, только чтобы добыть этот заголовок.