Так как не все браузеры поддерживают 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);
}
};