Я пытаюсь создать приложение ReactNative chat. Бэкэнд состоит из сервера Prosody XMPP/Bosh. Теперь я хочу подключиться, используя библиотеку Javascript Strophe.js. Проблема в том, что библиотека Strophe.js зависит от глобальной переменной document
для генерации узлов XML. У кого-то из вас уже была такая же проблема или у вас есть ключ к пониманию того, как заставить ее работать?Использование Strophe.js с ReactNative
ответ
двигатель 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()
Эй, @bman, вы пробовали это решение? Я не могу заставить его работать вообще с помощью RN. Не могли бы вы поделиться еще немного кода о том, как начать работу с Strophe + Mock-браузером? Большое спасибо! –
Я нашел рабочее решение: 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 )
- 1. Использование NSURLProtocol с ReactNative
- 2. пользовательские сообщения XMPP с Strophe.js
- 3. гнездо IO с ReactNative
- 4. ReactNative с удаленным репозиторием
- 5. ReactNative navigation
- 6. node.js, XMPP Strophe.js
- 7. Strophe.js в полосе Регистрации
- 8. AngularJs + Strophe.js получает сообщение
- 9. WebStorm + ReactNative?
- 10. Strophe.js Полученное уведомление (состав)
- 11. ReactNative ListView с Json Api
- 12. Новая регистрация на openfire с помощью Strophe.js
- 13. Полный пример передачи файла Strophe.js
- 14. ReactNative - конфликт Spotify SDK зависимости
- 15. Strophe.js Jabber Search (XEP-0055)
- 16. Плагин регистрации Strophe.js не работает
- 17. Strophe.js, предоставляющий статус AUTHFAIL всегда
- 18. ReactNative/Momentjs date parsing issue
- 19. Strophe.js: Как использовать плагин strophe.roster.js
- 20. ReactNative real native navigation
- 21. ReactNative iOS Spotify SDK
- 22. ReactNative/Switch Component: onValueChange
- 23. ReactNative listview начальное состояние
- 24. ReactNative: как центрировать текст?
- 25. ReactNative ActivityIndcator вызывает RSOD
- 26. Hybrid (React and ReactNative)
- 27. Firebase клиент на ReactNative
- 28. ReactNative: using Atom IDE
- 29. Getting ReactNative FacebookSDK working
- 30. Rich ReactNative TextInput
Эй sebbo, я знаю, что это было некоторое время, так как вы просили, но вам удалось заставить его работать? Я хотел бы поболтать с вами, чтобы обсудить это, если вы до него, это очень помогло бы мне! Приветствия –
Привет, @PrettyGoodPancake, к сожалению, я не смог найти простой способ заставить его работать, поэтому я в основном переключился на сторонний сервис сообщений (sendbird.com) – sebbo
Вы пробовали https://github.com/node-xmpp/ node-xmpp? Я думаю, что NodeJS lib с большей вероятностью будет работать в RN. –