Чет у вас каша.
Подписка на сокет это не дело конкретной страницы, это задача для логики на уровне всего приложения. Если бизнес-задача такова что нужно открыть подписку при открытии страницы, то страничка должна извещать сервис о своей активности.
Допустим я выхожу со страницы "/home/request;id=24". После такого выхода история url-перемещений как бы удаляется, я не могу вернуться на неё путём нажатия на кнопку "назад"
router.navigate оставляет историю перемещений, если не указано дополнительных опций. location трогать не надо вообще.
Socket (на клиенте) инициализируется на нескольких страницах:
this.socket.on('server-response', data => { })
Сделовало бы сделать в каком-нибудь сервисе
serverResponse = new Observable(observer => {
this.socket.on('server-response', data => ovserver.next(data));
return () => this.socket.removeListener('server-response');
}).pipe(share());
И потом на странице просто подписываешься на этот поток, а в ngOnDestroy() отписываешься.
Тут нет обработки ошибок соединения или дисконнекта, советую разобраться со всем самому. Возможно пригодится fromEvent или fromEventPattern