将Strophe.js与ReactNative一起使用

时间:2015-11-06 16:00:01

标签: javascript reactjs xmpp react-native strophe

我正在尝试构建一个ReactNative聊天应用。后端由Prosody XMPP / Bosh服务器组成。现在我想通过使用Strophe.js Javascript库进行连接。我遇到的问题是Strophe.js库依赖于全局document变量来生成XML节点。你们中的任何人是否已经遇到同样的问题,或者有什么想法可以让它发挥作用?

3 个答案:

答案 0 :(得分:2)

我找到了一个有效的解决方案: 我使用ReactNative WebView运行并行而不可见到我的ReactNativeApp,类似于这个Crypto(但使用ReactNativeWebview!而不是React Native WebView Javascript Bridge)

在WebView中你可以使用Strophe,你只需要在WebView中为RN和Strophe之间的通信编写一个包装器。

我将尝试使用正常的基本版本制作gitRepo

(检查加密示例: https://github.com/saulshanabrook/react-native-webview-crypto

答案 1 :(得分:0)

ReactNative中使用的Javascript引擎是无头的,这意味着它不提供navigatordocumentlocation等全局对象。除此之外,浏览器功能齐全且全部普通浏览器的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()

答案 2 :(得分:0)

有一些xmpp javscript库可以与react-native一起使用。 但是它们需要进一步的配置。

也有非常积极维护的xmpp库,用于本机反应。 XMPP.js是其中之一。他们还提供插件支持。 但是,它们还处于开发初期,当然像strophe.js这样的库要先进得多。