Light Extensible Messaging Protocol (LEMP) - A New and Simple Approach to Messaging - DZone Integration

When we think about building a new messaging platform (web, mobile, etc.), it is normal that using XMPP (Extensible Messaging and Presence Protocol)[1] comes to our minds first. It is based on XML messages traveling through the network between the server and the client. Many popular applications use XMPP: WhatsApp, Nimbuzz, ChatMe, and more. But if you want to design a system which isn't complex and deals with JSON instead of XML, XMPP might be the heavyweight for you. You may really want to deal with JSON, not XML. You may also want to eliminate unnecessary protocol messages.

Light Extensible Messaging Protocol (LEMP), which is based on JSON, is born to be light and powerful with its extensibility. You can use it when you want to write a new instant messaging platform or make IoT devices to talk with each other.

Let's talk about some of the main features of LEMP and improve it together! The initial and incomplete project is on GitHub; take a look at LEMP on GitHub[2].

LEMP has three main packet types- do not forget that all details of these protocol packets are defined in the GitHub project[3]. Let's briefly define these packets here:

1. Request

Every client-server architecture has a request-response relation. For example, when I run WhatsApp on my mobile phone, it communicates with the WhatsApp servers and makes an authentication request for me. Then, my mobile phone receives the authentication response and the application authenticates me. This kind of request messages can be thought of as questions. A client can ask a question to the server or the server can ask a question to a client. Then, the interlocutor answers the question; the answer is the response packet.

The main request types of LEMP are stated below, and every request has a response: success or error.

  • Authentication Request

  • User Followings (Roster) Requests

  • State (Last Offline) Request

  • Personnel Requests

  • Privacy Requests

  • Group Requests

    • Create Group Request

    • Add Users to Group Request

    • Banish Users From Group Request

    • Leave From Group Request

    • Terminate Group Request

    • Group Information Request

    • Add Admins Request

    • Get Admins Request

    • Picture Set/Get Request

    • Name Set/Get Request

    • Mute/Unmute Group Request

  •      Broadcast Group Requests

    • Add Users To Broadcast Group Request

    • Remove Users From Broadcast Group Request

    • Terminate Broadcast Group Request

    • Picture Set/Get Request

    • Name Set/Get Request

  • Server Requests

    • Server Time Request

    • Knock-Knock Request

2. Information

Information messages may be sent by the server to a client, or by a client to the server to inform a peer. For example, when you are going to send a message to a friend from WhatsApp and you open the chat window, you see his/her last offline date on the top of the chat window. If he/she opens the app while you are writing your message, you see that he/she came online on the top of the window. Namely, you are informed by the server that you friend has been online; this is an information message. Then, if he/she starts to write a message to you, you receive a "composing" information packet from him/her, and you see it on the chat window.

The main information packet types of LEMP are

3. Message

Messages are the packets for real communication. For example, you may send a text or video message to your friend from WhatsApp. These are client-to-client messages. They are sent to the server and then to their receivers. They build real communication.

The main message types of LEMP are

  • Text

  • Photo

  • Audio

  • Video

  • Location

The other messages are:

  • Server Receipt Message (which the server sends to the message sender for saying that it received the message).

  • Delivered Message (which the message receiver sends to the message sender for saying that it received the message).

  • Noticed Message (which the message receiver sends to the message sender for saying that it noticed/read the message).

All the messages are storable and should not be lost anywhere, such as the network.

As I said before, you can analyze all these types and read more details about the three packets on the LEMP GitHub page[4]. By the way, this is not the final state of the protocol; it is going to evolve. You can be a contributor, too!

Comments

Popular posts from this blog

New Article Posted: Seven Things You Should Do in Your AMS

10 Common Mistakes Biblical Counselors Sometimes Make, Part 8