В моем компоненте DashBoard объект Dash, содержащий всю необходимую мне информацию, должен поступать с сервера через канал сокета.
Эти каналы относятся к некоторым параметрам, которые пользователь может выбрать на панели инструментов.То есть, если он выбирает один вариант, я должен подключить его к одному каналу, если он выбирает другой вариант, я подключаю его к другому каналу.
Чтобы подключиться к определенному каналу, я должен сначала сделать HTTP-запрос POSTс некоторыми параметрами, необходимыми для предоставления запроса с ожидаемыми данными.
В ответ сервер отправляет мне правильное имя канала (на самом деле это хеш, который должен быть добавлен в конце URL-адреса, который я использую для установления соединения через сокет).).Я поместил этот хеш в локальное хранилище.
Чтобы подписаться на канал, я написал сервис, который используется следующим образом:
this.socketInfoService.getDashInfoBySocket(channelName).subscribe(
(res: Dash) => this.dash = res
)
Просто чтобы выяснить, как все работает, я сначала решилнаписать определенный метод на моем компоненте Dash, который ожидает канал сокета в качестве аргумента и открывает / подписывается на канал.
Вот как-то так (я знаю, что все плохо, но из-за недостатка знаний и времениЯ не могу придумать ничего лучшего прямо сейчас):
public changeChannel(newChannelName: string)
{
if (this.sub)
{
this.sub.unsubscribe();
}
this.sub = this.socketInfoService.getDashInfoBySocket(newChannelName).subscribe(
(res: Dash) => this.dash = res
)
}
Но дело в том, что он не работает, он выполняет отписывающуюся часть, но по какой-то причине никогда не подписывается на другой канал.Я не понимаю почему.Как мне решить эту проблему?
Я совершенно новичок в этом деле и чувствую себя совершенно потерянным, поэтому любая помощь будет принята с благодарностью.