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
Crazy on performance...
в socket.io это все уже реализовано и прекрасно работает (да код не оптимизированый и тормазной, но прекрасно решающий данную задачу, да и дорабатывают его, покрайней мере ошибки, найденные мной, которые были связаны с socket.io год назад, сейчас в нем отсутствуют)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы