VGrabko
@VGrabko
Golang, Php, Js

Стоит так делать или есть какие то паттерны?

Так как не все браузеры поддерживают ws или ajax на другой домен мне потребовалось работать по трём протоколам (ws, ajax, jsonp). Сначала я подумал сделать по sdk на каждый протокол но потом понял что это очень избыточно потому реализовал что то вроде драйвера для каждого из протокола.

Перед загрузкой сдк я проверяю протоколы
//загрузка SDK дрйвера
var OperaMini = Object.prototype.toString.call(window.operamini) === "[object OperaMini]"
 if (OperaMini) {
     Core.Ajax.GetScript("/js/sdk/driver/jsonp.js");
  } else {
      if ('WebSocket' in window) {
          Core.Ajax.GetScript("/js/sdk/driver/ws.js");
       } else {
            Core.Ajax.GetScript("/js/sdk/driver/ajax.js");
        }
  }

Этот драйвер реализует метод send(data, call);, а потом в sdk я делаю как то так
sdk = {
    driver:function(data, call){
        SdkDriver.send(data, call);
    },
    GetUser:function(id, call){
        this.driver({
            method: "GetUser",
            UserID: id
        },call);
    }
};
  • Вопрос задан
  • 236 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Ткнуть в доку лучше готового к копипасте ответа
в socket.io это все уже реализовано и прекрасно работает (да код не оптимизированый и тормазной, но прекрасно решающий данную задачу, да и дорабатывают его, покрайней мере ошибки, найденные мной, которые были связаны с socket.io год назад, сейчас в нем отсутствуют)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
16 янв. 2021, в 00:06
3000 руб./за проект
15 янв. 2021, в 23:54
15000 руб./за проект