6
votes

I have a react-native Chat application which I am running on my android phone using USB debugging and I am using OPENFIRE as a chat server. For connecting with Openfire I am using library 'react-native-xmpp'. Below is the code for connection with OPENFIRE using react-native-xmpp --

import XMPP from 'react-native-xmpp';
var JID = '[email protected]';

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('[email protected]', 'root','RNXMPP.PLAIN','192.168.4.246',5222);
XMPP.message('Hello world!' , JID);

XMPP.disconnect();

The IP I used here is my local IP address. I am trying to connect to port 5222 as a PLAIN connection. But I am getting an error saying

SSL/TLS required by the client but not or no longer supported by server.

I checked the OPENFIRE configuration at port 5222. I disabled the encryption and enabled the encryption but not getting any difference in either case. I also tried to connect to port 5223 then the error says

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

I not uploaded much of code because I think the error either lies in the library or some networking concept that I don't understand. Does anybody have any idea what may be going wrong here or any other better way to do it?

1

1 Answers

0
votes

You are facing this error because in the java code of raect-native-xmpp, security mode is enabled by default. If you want to use PLAIN text authentication than you must turn this off.

Example: Suppose you react-native app name is TestApp then go to the following directory: TestApp/node_modules/react-native-xmpp/android/src/main/java/rnxmpp/service and go to Line 76 and replace with the below line:

Before:

.setSecurityMode(ConnectionConfiguration.SecurityMode.required);

After:

.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);