Android Tutorial Custom WebSocket Based Push Framework

The online example is currently disabled due to spam :(

Now that both B4A and B4J support WebSockets it is possible to implement a full push framework solution.
The solution is made of two components. The client app (B4A) and the server WebApp (B4J).

The client opens and maintains a WebSocket connection with the server.


In the browser you can see the number of active connections and the total number of users (which includes inactive users). You can send a message to all users.

The message is queued in a database and will be delivered to the devices when they connect.

A similar process happens on the device. If the activity is paused then the message is stored with the help of KeyValueStore and a notification is shown. Later when the activity becomes visible the messages are listed on the device.



Note that the device can also send messages to the server (it is not implemented in the demo interface).
It is also possible to send messages to specific ids.

Please give it a try. You need to first download WebSocket library (v1.01+):
Run the program and then go to the online console to send a message:

You can also download the compiled apk and install it.

The server code is available here:

B4J client implementation:

Edit: Both the server code and device code were updated.
This example can be the base for many types of solutions that require a persistent server connection.


    11.5 KB · Views: 4,367
  • WebSocketPush.apk
    143.7 KB · Views: 2,791
Last edited:

Gabino A. de la Gala

Active Member
Licensed User
Longtime User
It works!!!

Will be possible to send lists of things to do and then bookmark the different items as they are doing?


B4X founder
Staff member
Licensed User
Longtime User
A new version was uploaded. Please download the new project or APK and install it. The previous WebSocket url is no longer valid.
There are several changes in this version. The device reports back to the server after receiving new messages. Only after this report messages are considered delivered. There is also a new heart-beat mechanism that closes the connection after 30 seconds of no server response. This is important in cases where the connection appears to be live but it is actually broken.

The server code is now available:


Active Member
Licensed User
Longtime User
Tested on two devices.
It works on android 4.0 device (online and deployed on local network).

But it doesn't work on another android 4.1 device (online and deployed on local network). It is the same after uninstall the antivirus software. The ws lib demo works fine on local network.


Active Member
Licensed User
Longtime User
Erel, you are right.

My Bad. In the debug mode,the PushService never start, it has been blocked by an app "root manager". After enable service to start from background, it works fine now.



Active Member
Licensed User
Longtime User
I has updated the Google Chrome to latest version and now I can see all connections.