B4J Library XMPP/JABBER - Best protocol to IM for B4J

Alberto Iglesias

Well-Known Member
Licensed User


XMPP/JABBER - Best protocol to Instant Messengers for B4J

This library was made based on XMPP Protocol

Installation instructions:
- Copy the .xml and .jar(s) files to your custom libraries folder
- Select in your REFERENCED LIBRARIES





Version history:
V1.0.0 (First public release - Donationware):
- Initial version

XMPP
Author:
Alberto Iglesias - alberto@visualnet.inf.br
Version: 1
  • XMPP
    Events:
    • deliverycomplete (Message As String)
    • messageArrived (Message As String)
    • onConnect ()
    • onDisconnect ()
    • onDisconnect (Status as boolean As )
    • onInitialized ()
    • onLogin ()
    Fields:
    • Host As String
      Name or IP of the Jabber/XMPP Server
    • Port As Int
      Port of the Jabber/XMPP Server
    Methods:
    • About As String
      About the developer
    • Connect
      Connect to the Jabber/XMPP Server
    • CreateChat (userJID As String)
      Create Chat with the JIB User
    • Disconnect
      Disconnect from Jabber/XMPP Server
    • GetHost As String
      Returns the host name of the server where the XMPP server is running
    • GetRoster As List
      Get Roster List
    • GetUser As String
      Get the connection current user
    • Initialize (eventname As String)
      Initializing XMPP Object
    • IsConnected As Boolean
      Get a connection status
    • IsSecureConnection As Boolean
      Check if the connection is secure
    • Login (Username As String, Password As String)
      Login into to the Jabber/XMPP Server
    • SendMessage (message As String)
      Send a message into the chat
    • Version As String
      Get the Library Version
    Permissions:
    • android.permission.ACCESS_WIFI_STATE
    • android.permission.INTERNET








You can try your APP using web client in https://jwchat.org/

Look this video:


References:
http://xmpp.org/
https://jwchat.org/

* This version is fully functional, the only one difference is when sending a message the text "Donationware" is delivery with your message.
Please consider a simple €10 donation and I send to you the Library without "Donationware" text in a sendmessage method.


 

Attachments

Last edited:

lymey

Active Member
Licensed User
Hi Alberto!
I am trying to run your example program and am getting the following in the Log:

Program started.
[objXmpp_onInitialized]
MQTT About = XMPP Library - By Alberto Iglesias (alberto@visualnet.inf.br)
MQTT Version = 1.0.0 ** DONATIONWARE **
May 05, 2015 7:02:50 PM org.jivesoftware.smack.provider.UrlProviderFileInitializer initialize
INFO: Loading providers for file [classpath:META-INF/core.providers]
May 05, 2015 7:02:50 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNING: A startup class [org.jivesoftware.smackx.provider.ExtensionInitializer] specified in smack-config.xml could not be loaded:
May 05, 2015 7:02:50 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNING: A startup class [org.jivesoftware.smackx.ServiceDiscoveryManager] specified in smack-config.xml could not be loaded:
May 05, 2015 7:02:50 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNING: A startup class [org.jivesoftware.smackx.XHTMLManager] specified in smack-config.xml could not be loaded:
May 05, 2015 7:02:50 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNING: A startup class [org.jivesoftware.smackx.muc.MultiUserChat] specified in smack-config.xml could not be loaded:
May 05, 2015 7:02:50 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNING: A startup class [org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager] specified in smack-config.xml could not be loaded:
May 05, 2015 7:02:50 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNING: A startup class [org.jivesoftware.smackx.bytestreams.socks5.Socks5BytestreamManager] specified in smack-config.xml could not be loaded:
May 05, 2015 7:02:50 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNING: A startup class [org.jivesoftware.smackx.filetransfer.FileTransferManager] specified in smack-config.xml could not be loaded:
May 05, 2015 7:02:50 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNING: A startup class [org.jivesoftware.smackx.LastActivityManager] specified in smack-config.xml could not be loaded:
May 05, 2015 7:02:50 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNING: A startup class [org.jivesoftware.smackx.commands.AdHocCommandManager] specified in smack-config.xml could not be loaded:
May 05, 2015 7:02:50 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNING: A startup class [org.jivesoftware.smackx.ping.PingManager] specified in smack-config.xml could not be loaded:
Unexpected event (missing RaiseSynchronousEvents): objxmpp_onlogin
Then when I try and login to the server:

Then When I try and send a message:

Error occurred on line: 94 (main).
java.lang.NullPointerException
at com.visualnet.xmpp.SendMessage(xmpp.java:283)
at b4j.example.main._cmdsendmessage_action(main.java:232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:563)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:221)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:156)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:93)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:82)
at anywheresoftware.b4a.BA$2.run(BA.java:165)
at com.sun.javafx.application.PlatformImpl.lambda$null$170(PlatformImpl.java:295)
at com.sun.javafx.application.PlatformImpl$$Lambda$48/1413246693.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(PlatformImpl.java:294)
at com.sun.javafx.application.PlatformImpl$$Lambda$47/1030870354.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$145(WinApplication.java:101)
at com.sun.glass.ui.win.WinApplication$$Lambda$36/1232367853.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
I have the libraries copied to the referenced libaries directory.

What have I missed?

Thanks for your help, if I can get this and the Android library working they will be very helpful!
 

Alberto Iglesias

Well-Known Member
Licensed User
Hey Lymey,

For me it´s working, look:



I suggest you create your own user and password in any jabber server to try, but you can try with my test user:

Check If .h .xml and .jar is in library folder and asmack-android-19-0.8.10.jar too


Server:jabber.chaotic.de
User: visualfriend
Pwd: MyJabber2015
 

lymey

Active Member
Licensed User
Hi Alberto,
I haven't tried the basic For Android version yet - the problem I am having is with B4J
 

lymey

Active Member
Licensed User
Hi Alberto,
I am using jdk1.8.0_45\bin\javac.exe, I was using 1.7 before also.
I still get all the same warning messages, but I can at least have a chat using the example app and Pidgin, and Process One's One Team client.
is there a plan to send and receive files?
May thanks
Paul
 

lymey

Active Member
Licensed User
That would be a shame,
I think having send/receive file functionality would make this an even more useful (and commercial) library.
I would be happy to donate more if it had that capability!
:)
 

tigrot

Well-Known Member
Licensed User
Hi Alberto,
I was testing your test APP on a W10 PC and get these errors:
B4X:
Waiting for debugger to connect...
Program started.
[objXmpp_onInitialized]
MQTT About = XMPP Library - By Alberto Iglesias (alberto@visualnet.inf.br)
MQTT Version = 1.0.0 ** DONATIONWARE **
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.provider.UrlProviderFileInitializer initialize
INFORMAZIONI: Loading providers for file [classpath:META-INF/core.providers]
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
AVVERTENZA: A startup class [org.jivesoftware.smackx.provider.ExtensionInitializer] specified in smack-config.xml could not be loaded:
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
AVVERTENZA: A startup class [org.jivesoftware.smackx.ServiceDiscoveryManager] specified in smack-config.xml could not be loaded:
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
AVVERTENZA: A startup class [org.jivesoftware.smackx.XHTMLManager] specified in smack-config.xml could not be loaded:
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
AVVERTENZA: A startup class [org.jivesoftware.smackx.muc.MultiUserChat] specified in smack-config.xml could not be loaded:
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
AVVERTENZA: A startup class [org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager] specified in smack-config.xml could not be loaded:
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
AVVERTENZA: A startup class [org.jivesoftware.smackx.bytestreams.socks5.Socks5BytestreamManager] specified in smack-config.xml could not be loaded:
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
AVVERTENZA: A startup class [org.jivesoftware.smackx.filetransfer.FileTransferManager] specified in smack-config.xml could not be loaded:
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
AVVERTENZA: A startup class [org.jivesoftware.smackx.LastActivityManager] specified in smack-config.xml could not be loaded:
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
AVVERTENZA: A startup class [org.jivesoftware.smackx.commands.AdHocCommandManager] specified in smack-config.xml could not be loaded:
apr 06, 2017 1:00:21 PM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
AVVERTENZA: A startup class [org.jivesoftware.smackx.ping.PingManager] specified in smack-config.xml could not be loaded:
Any idea?

Ciao
Mauro
 

birnesoft

Active Member
Licensed User
Hello Alberto,
I have the same problem on a W10 PC, B4J 5.9, jdk1.8.0_66
Any idea?
Björn

B4X:
Waiting for debugger to connect...
Program started.
[objXmpp_onInitialized]
MQTT About = XMPP Library - By Alberto Iglesias (alberto@visualnet.inf.br)
MQTT Version = 1.0.0
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.provider.UrlProviderFileInitializer initialize
INFORMATION: Loading providers for file [classpath:META-INF/core.providers]
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNUNG: A startup class [org.jivesoftware.smackx.provider.ExtensionInitializer] specified in smack-config.xml could not be loaded:
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNUNG: A startup class [org.jivesoftware.smackx.ServiceDiscoveryManager] specified in smack-config.xml could not be loaded:
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNUNG: A startup class [org.jivesoftware.smackx.XHTMLManager] specified in smack-config.xml could not be loaded:
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNUNG: A startup class [org.jivesoftware.smackx.muc.MultiUserChat] specified in smack-config.xml could not be loaded:
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNUNG: A startup class [org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager] specified in smack-config.xml could not be loaded:
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNUNG: A startup class [org.jivesoftware.smackx.bytestreams.socks5.Socks5BytestreamManager] specified in smack-config.xml could not be loaded:
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNUNG: A startup class [org.jivesoftware.smackx.filetransfer.FileTransferManager] specified in smack-config.xml could not be loaded:
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNUNG: A startup class [org.jivesoftware.smackx.LastActivityManager] specified in smack-config.xml could not be loaded:
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNUNG: A startup class [org.jivesoftware.smackx.commands.AdHocCommandManager] specified in smack-config.xml could not be loaded:
Okt 19, 2017 10:22:24 AM org.jivesoftware.smack.SmackConfiguration parseClassToLoad
WARNUNG: A startup class [org.jivesoftware.smackx.ping.PingManager] specified in smack-config.xml could not be loaded:
 
Top