WebSoket и Promise || Иммитация Ajax

81
03 марта 2022, 06:50

Решил отказаться от Ajax и все взаимодействие с сервером провожу через вебсокеты.

Все стандартно: получаю, отправляю запросы. Однако, столкнулся с таким неудобством: я не могу, как при использовании Ajax, обработать ответ сервера в том же месте кода, в котором и был отправлен запрос. Приходится отправлять сообщение и где-то там, в структуре проекта, создавать обработчик в ответ на это сообщение, в котором мне надо просто вывести alert (условно)

По факту, в некоторых случаях запись типа ws.send(message).then().... мне бы идеально подошла, но как я понимаю с вебсокетами так не получится. Или получится?

UPDT: В ожидании внимания к вопросу набросал такой класс.

`class WS {
  constructor(wsAddr) {
    this.$ws = new WebSocket(wsAddr);
  }
    get(message){
        const {type} = message;
        return new Promise((resolve, reject) =>{
            this.$ws.send(JSON.stringify(message));
            this.$ws.addEventListener('message', (res)=>{
                const data = JSON.parse(res.data);
                if (data.type === type){
                    resolve(data)
                }
            });
        })
    }
};`

Код работает, мою задачу выполняет. Теперь я могу писать: ws.get().then(res)....

Но возникают всякие вопросы: не превышу ли я какой-нибудь лимит по слушателям? Что будет если в момент запроса придет другое сообщение от сервера? и другие вопросы, о которых я и не подозреваю

READ ALSO
Добавляем класс всем кнопкам на странице

Добавляем класс всем кнопкам на странице

Доброе время суток! Вопрос вот в чем : Есть ТАБы(кнопки) при нажатии на каждый из которых добавляется класс active, на кокой ТАБ нажал, тому и добавился...

90
PJAX перезагрузка страницы

PJAX перезагрузка страницы

Собственно как заставить PJAX сделать запрос на сервер и обновить страницу без перезагрузки не нажимая на ссылкуПробовал следующее

63
Как обнулить одномерный массив

Как обнулить одномерный массив

Вот часть моего кода, он срабатывает по кнопке и делает некоторые вычисленияКак можно обнулить (очистить) массив, что бы не создавались дополнительные...

87