2013-04-04 3 views
2

У меня есть приложение Ember.js, которое я разрабатываю и которое отлично работает. Теперь я пытаюсь интегрироваться в библиотеку SIP через Websockets, называемую JsSIP. И мое приложение Ember, и отдельное приложение SIP с концептуальным дизайном отлично работают независимо; однако, как только я интегрирую эти два вместе, я начинаю видеть странные ошибки в библиотеке SIP. Я, наконец, сузился до того, что это проблема пространства имен между двумя API-интерфейсамиEmber.js Проблемы с пространством имен

Я видел как минимум еще один вопрос SO относительно конфликтов пространства имен между Ember.js и другими библиотеками, которые выполняют любые манипуляции DOM (например, JQuery Mobile). Насколько мне известно, библиотека SIP, которую я использую, делает очень мало, если есть какие-либо фактические манипуляции с DOM. Я видел некоторые предложения по использованию RequireJS, хотя я действительно не хотел модулировать мой клиент и даже не знаю, разрешит ли он конфликты пространства имен. Помогло бы обертывание вещей в Ember.Namespace?

Я создал супер простой JSFiddle, который демонстрирует основную проблему. Любые предложения о том, как я могу решить эту проблему между двумя библиотеками, очень ценятся. Вот код голых костей, которая входит в Fiddle:

// JsSIP code 
try 
{ 
    var configuration = { 
     'uri':   "[email protected]", 
     'password': "password", 
     'trace_sip': true, 
     'ws_servers': "ws://example.com" 
}; 
    myPhone = new JsSIP.UA(configuration); 
    myPhone.start(); 
} 
catch(e) 
{ 
    console.log(e.message); 
} 

// Ember code 
window.App = Ember.Application.create(); 

ответ

1

Строительство JsSIP.UA трансформирует ws_servers в массив и итерации над ним с for(element in array), который срабатывает в расширениях к массиву прототипу, сделанный Эмбер. JS. Вы можете отключить это с помощью следующего кода для вашей библиотеки SIP работать из коробки (добавьте его перед включением сценария Ember):

window.Ember = {}; 
Ember.EXTEND_PROTOTYPES = false; 

Это может иметь большое влияние на ваше Ember приложение, хотя. Прочтите эту страницу документации, чтобы узнать больше: http://emberjs.com/guides/configuring-ember/disabling-prototype-extensions/

+0

Большое вам спасибо за быстрый ответ !!! Это имеет смысл. Я знал, что это конфликт между 2-мя библиотеками, просто затрудняет сужение точной проблемы. Еще раз спасибо!! :) – Jessica

Смежные вопросы