无法使用react-native-xmpp与openfire连接

时间:2018-03-22 13:13:56

标签: ssl react-native xmpp openfire

我有一个本机聊天应用程序,我在Android手机上使用USB调试运行,我使用OPENFIRE作为聊天服务器。为了与Openfire连接,我正在使用库' react-native-xmpp '。下面是使用react-native-xmpp -

与OPENFIRE连接的代码
import XMPP from 'react-native-xmpp';
var JID = 'admin@192.168.4.246';

XMPP.on('error', (message) => console.log('ERROR:' + message));
XMPP.on('loginError', (message) => console.log('LOGIN ERROR:' + message));
XMPP.on('login', (message) => console.log('LOGGED!'));
XMPP.on('connect', (message) => console.log('CONNECTED!'));

XMPP.connect('ramvallabh@192.168.4.246', 'root','RNXMPP.PLAIN','192.168.4.246',5222);
XMPP.message('Hello world!' , JID);

XMPP.disconnect();

我在这里使用的IP是我的本地IP地址。 我正在尝试连接到端口5222作为PLAIN连接。但我收到一个错误说

  

客户端要求的SSL / TLS,但不支持或不再支持   服务器

我检查了端口5222处的OPENFIRE配置。我禁用了加密并启用了加密,但两种情况都没有任何区别。我还试图连接到端口5223然后错误说

  

javax.net.ssl.SSLHandshakeException:   java.security.cert.CertPathValidatorException:信任锚   未找到证书路径。

我没有上传太多代码,因为我认为错误要么在于图书馆,要么是我不理解的网络概念。 有没有人知道这里可能出现的问题或其他更好的方法呢?

1 个答案:

答案 0 :(得分:0)

您面临此错误,因为在raect-native-xmpp的Java代码中,默认情况下启用了安全模式。如果要使用PLAIN文本身份验证,则必须将其关闭。

示例:假设您本机反应的应用名称为 TestApp ,然后转到以下目录: TestApp / node_modules / react-native-xmpp / android / src / main / java / rnxmpp / service 并转到第76行,并替换为以下行:

之前:

.setSecurityMode(ConnectionConfiguration.SecurityMode.required);

之后:

.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);