Ever wondered how popular apps like Cricbuzz, Whatsapp, Trello, Google Docs work, or thought of building an app that gets automatic live data like a chatting app, a multiplayer game, a live quiz, etc? Then Socket.IO is the answer for you. In this article, I will illustrate how you can implement Socket.IO in your android app.
Socket.IO is a library that enables real-time, bidirectional, and event-based communication between the client and the server.
Socket.IO is built on top of the WebSockets API (Client-side) and NodeJs. But it is not an implementation of web sockets. It is used only for transport. Here both servers and clients can emit and listen to their calls. The server can also trigger the event on a specific route which is listened by their subscribers, which means the client has put their listener for particular events.
Kotlin doesn’t have its official documentation for Socket.IO so we will be studying its operation from Java documentation and will translate it to Kotlin as both languages are interoperable.
The library provided by Naoyuki Kanezawa has also published its blog for Socket.IO using java in android. I would recommend you to use this library as it is easy to implement, provides socket (connect, disconnect, reconnect) detection, auto-reconnect feature, and is also promoted in official Socket.IO documentation.
Now let’s move to the coding part and in the next few steps, you can set up your socket.io connection. ✌️
• First and foremost add the dependency to app-level build.gradle file.
• Don’t forget to add internet permission in the manifest file. 😅
• Create a Kotlin class for socket initialization which can be used anywhere in the project. Here IO.socket() method returns a socket for https://yourSocketURL.com with the default options. Notice that the method mSocket caches the result, so you can always get the same Socket instance for an URL from any Activity or Fragment.
• Don’t forget to add your socket initialization application class name in the manifest file. 😅
• Now we will create the object of the Socket Instance class which we created earlier and connect the socket using .connect() method.
We will use IO.options() method so that socket will be reconnected by itself if ever It gets disconnected due to some network problem.
• To check if the socket is connected or not we can use .connected() method.
• For receiving instant real-time data we need to use on() method. We can get data in a JSON data block or any other data form. To show anything on the screen all the UI bind logic should be coded on the UI Thread part as the socket works on the background thread.
• Checking when the socket is disconnected or reconnected.
• For sending data to the server in the form of JSON data block or any other data form we have to use the emit() method.
If you are going to receive data based on what you emit to the server then first you should start listening to the event using the on() method and then emit your data.
• And last but not the least, don’t forget to close the socket connection using .disconnect() method and remove the listener using .off() method when you are done.😇