2015-11-06 4 views
3

Я пытаюсь создать приложение ReactNative chat. Бэкэнд состоит из сервера Prosody XMPP/Bosh. Теперь я хочу подключиться, используя библиотеку Javascript Strophe.js. Проблема в том, что библиотека Strophe.js зависит от глобальной переменной document для генерации узлов XML. У кого-то из вас уже была такая же проблема или у вас есть ключ к пониманию того, как заставить ее работать?Использование Strophe.js с ReactNative

+0

Эй sebbo, я знаю, что это было некоторое время, так как вы просили, но вам удалось заставить его работать? Я хотел бы поболтать с вами, чтобы обсудить это, если вы до него, это очень помогло бы мне! Приветствия –

+0

Привет, @PrettyGoodPancake, к сожалению, я не смог найти простой способ заставить его работать, поэтому я в основном переключился на сторонний сервис сообщений (sendbird.com) – sebbo

+0

Вы пробовали https://github.com/node-xmpp/ node-xmpp? Я думаю, что NodeJS lib с большей вероятностью будет работать в RN. –

ответ

0

двигатель Javascript используется в ReactNative это безголовый, означает, что он не обеспечивает глобальные объекты, такие как navigator, document, location и т.д. кроме того, что браузер полностью функционален и имеет все XHR функциональные нормальный браузер.

Связь Storephe с сервером основывается на запросах XHR. Вам нужно всего лишь высмеять объект документа, чтобы предотвратить появление Strophe исключения, если он не может найти объект document. mock-browser построить по этой причине. Простой пример того, как использовать его:

let MockBrowser = require('mock-browser').mocks.MockBrowser; 
let mock = new MockBrowser(); 
GLOBAL.window = mock.getWindow() 
GLOBAL.document = mock.getDocument() 
GLOBAL.navigator = mock.getNavigator() 
+0

Эй, @bman, вы пробовали это решение? Я не могу заставить его работать вообще с помощью RN. Не могли бы вы поделиться еще немного кода о том, как начать работу с Strophe + Mock-браузером? Большое спасибо! –

2

Я нашел рабочее решение: Im используя ReactNative WebView работает параллельно и не Видна моей ReactNativeApp, подобно этому Crypto (но с ReactNativeWebview не Реагировать Native WebView Javascript Bridge)

В WebView вы можете использовать Strophe, вам просто нужно написать Wrapper для связи между RN и Strophe в WebView.

Я постараюсь сделать gitRepo с рабочей базовой версии

(Проверьте Crypto Пример: https://github.com/saulshanabrook/react-native-webview-crypto )

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