1. What is XMPP?
Extensible messaging
And presence protocol, in simple terms, is a protocol for sending and receiving and processing messages, but the messages sent by this Protocol are neither binary nor strings, but XML.
2. What is Im?
Instant Messenger, a timely communication software, is the QQ and MSN
Messenger and Gtalk. Gtalk is an implementation based on the XMPP protocol, while others are not. At present, Im is an inevitable tool for almost every netman. There are some enterprise-level IM applications in large foreign enterprises, but its commercial value has not been fully realized yet. Imagine that XMPP is a public protocol, so every enterprise can use it to develop im suitable for its own business and improve its production efficiency; or even, you can also integrate this communication software in online games so that you can not only chat while playing, but also develop IM applications suitable for the game itself, such as some key game scenario reminder functions, team speech communication can be implemented based on IM.
3. What is the overall architecture diagram?
4. What are the nodes in the architecture?
Spark provides a basic implementation of the client and provides a good plug-in architecture. This is a good news for developers. I strongly recommend that you use plug-ins to implement your new functions, instead of modifying the source code. This will benefit your project architecture and minimize the impact of the original project.
Openfire is an implementation of an IM Server Based on XMPP protocol. Although two users can send messages in point-to-point mode after connection, however, you still need to connect to the server to obtain some connection information and communication information. Therefore, the server must be implemented. Openfire also provides some basic functions, but it is really basic! Fortunately, it also provides plug-in extensions, just like spark.
Smack is a Java implementation of XMPP protocol and provides a set of scalable APIs. However, sometimes you still have to use your own custom XML file content to implement your own functions.