2015-11-06 184 views
3

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

+0

嘿sebbo,我知道它已经有一段时间,因为你问,但你管理使其工作?如果您愿意,我很乐意与您讨论这个问题,这对我很有帮助! 干杯 –

+0

嗨@PrettyGoodPancake不幸的是我找不到一个简单的方法来使它工作,所以我基本上切换到第三方消息服务(sendbird.com) – sebbo

+0

你有没有试过https://github.com/node-xmpp/ node-xmpp?我认为NodeJS lib更可能在RN中工作。 –

回答

0

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() 
+0

嘿@bman,你有没有试过这个解决方案?我似乎无法使用RN进行工作。您介意分享一些关于如何开始使用Strophe +模拟浏览器的代码吗?非常感谢! –

2

我发现了一个有效的解决方案:使用ReactNative的WebView 进出口运行并行和不可见我ReactNativeApp,类似这样的加密(但ReactNativeWebview没有反应过来本地的WebView Javascript Bridge)

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

我会尽量让gitRepo与工作基本版本

(检查加密例子: ​​3210 )