Во-первых, я прочитал этот существующий: Несколько easyXDM на одной странице
К сожалению, это не помогает мне с моими проблемами.
У меня есть существующее приложение, которое уже использует сокет easyXDM в качестве потребительского сайта. Сейчас я разрабатываю новое приложение, которое будет встраивать существующее приложение, поэтому оно станет потребителем и поставщиком.
Существующее приложение использует easyXDM просто из глобальной области видимости без пространства имен и без isHost
опция конфигурации сокета.
Когда я сейчас добавляю свою новую библиотеку и пытаюсь создать новый сокет, я получаю ошибку
window-manager: TypeError: getParentObject(...).Fn.get(...) is not a function TypeError: getParentObject(...).Fn.get(...) is not a function
при открытии второго гнезда.
Поэтому я попытался использовать опцию noConflict. К сожалению, это устанавливает
window.easyXDM = _easyXDM = undefined
в вызове easyXDM.noConflict, поэтому мое существующее приложение и сокет больше не работают, так как window.easyXDM исчезает.
Когда я изменяю свое существующее приложение, чтобы оно также использовало экземпляр easyXDM, возвращаемый из noConflict, это так же, как когда я просто использую window.easyXDM.
Когда я создаю второй новый экземпляр с noConflict из моего первого нового экземпляра, моя новая библиотека, в конечном счете, нуждается в существующей реализации, расположении и имени, где находится easyXDM.
Так что ИМХО решение noConflict в easyXDM довольно бессмысленно. Или как использовать несколько сокетов, особенно один в качестве потребителя и один в качестве поставщика, на одной странице без какой-либо связи между реализациями?
// existing
var socket = new easyXDM.socket(cfg);
// addon
var My = {
easyXDM: easyXDM.noConflict("My"), // not working, no easyXDM anymore
open: function (cfg) {
this.socket = new this.easyXDM.socket(cfg);
}
};
My.open(cfg);