2015-11-06 241 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 )