We have ICQ, OICQ, AIM, Messenger, etc., although it is a chat contact tool, but there is even unable to exchange information. There are a lot of friends, and everyone's taste is different. Do you want to open all Xicq? Look, how good people e-mail, from the system of Iraqi. The intention of Xicq is to contact, chat, not to talk about it, but if you can do something else, isn't it better? Waiting, the manufacturer is too small to provide us. Otherwise, you have developed it yourself, but the huge user group behind the Xicq system cannot be ignored. If open standards, provide comprehensive SDK ... well, now we have jabber ...
Not just Jabber
Although Jabber is designed as an instant messaging system, its XML architecture makes it more.
By Steve Gillmor and Sean Gallagher
Jabber is an open source, cross-platform, XML-based messaging system, on which user can deliver text, sound, and video, even directly communicating between programs. DEVX.com's Director Steve Gillor interviewed Jabber's XML architecture for Jabber's XML architecture.
Miller: The client of the instant messaging system is a program used to send and receive messages and display it to the user. In the server side, the server communicates with different instant messaging systems (servers), which is transparent to customers, so that different services can be dialogue, data exchange and processing. In a general sense, Jabber is an instant messaging platform. But more deeper, is a platform for XML data transfer between services (services) and applications, application and applications. You will find that Jabber in such a model will have a wider application range than simple instant messaging.
GILLMOR: Can you give an example? Miller: There are many applications to share file sharing in the browser in a whiteboard (Whiteboard), called collaboration browsing. And what we do is to provide a universal framework for the backend processing of these applications. For example, you want to sync your address book. If your address book is stored in XML, then the SyncML program is transmitted to the server. These applications may use Jabber to complete the sending and receiving data. When you update your contacts in a program, they will automatically transfer them to the server. Thus, the server notifies all programs that are listening to the address book XML data.
GILLMOR: Why use XML? Miller: In 1998, I just started to start Jabber. At that time, through the reverse engineering, there were many open source function libraries to communicate with different instant messaging systems (AIM, ICQ and Yahoo). But to complete such a client, you must use these function libraries in different ways. In fact, as long as you analyze the data flow of these systems, it will find that it is a simple message, a simple notice, and a list of friends. If you want to define a universal data format, you only have XML.
GALLAGHER: How is Jabber extended these traditional messaging (chat) features? Miller: For example, we have written extended modules for RSS (RICH Site Summary) ---- RSS Agent. You know, there are now many sites to release news titles and brief news in RSSS, such as SlashDot, CNN, and more. With the Jabber client, you can let the RSS proxy track the specified site. When it finds a news title, it will be sent back immediately. GALLAGHER: When you send a request to the RSS agent, this agent is integrated into the client program itself, or it is a proxy for the server-side type? Miller: Today, it is done at the client. At the client, there will be a registration screen for registering the agent. You can register on ICQ or AIM and communicate with both users. And no matter where you are in any place, start any customer programs at any time, the RSS agent will automatically transfer the news headline to you. Gillmor: Is it like a Ticker in the form of Ticker as AIM? Or is it in the window text? Miller: Both. The client can display it as text. However, if the client program can extract XML data in the message, it can be displayed in the form of Ticker or otherwise anywhere. GILLMOR: These data can be used by the server, and re-released in the form of DHTML, play a bit more? Miller: Of course. The recipient can be other servers and publish it to other Web sites --- web service model.
Gillmor: Do you have an edr: Don't you have this Jabber Server? Miller: The next generation of servers we are writing will be able to include any customer. And will combine the server more closely with our customers.
GILLMOR: This sounds like Peer-to-Peer.Miller: Too right. At the level of Server-To-Server, Jabber is Peer-to-Peer. We let the server are closer to our customers, which is clearly Peer-to-Peer technology. From a technical point of view, an instant messaging system is dependent on the central server. But from the user's point of view, it is more like Napster's Peer-peer interaction, although NASPSTER has a central server.
Gillmor: How many procedures do you have to work in Peer-to-Peer, do you have to do with traditional client / server programs? Miller: Let's take a look at the E-mail server, which works 100% work in Peer-to-Peer. Each E-MAI server (SMTP server) can communicate equally with any of the other SMTP servers on the network. This is a client / server relationship from the server to the customer. But from the server to the server, this is totally the peer-to-peer network. Only Peer-to-peer can truly let a background processing system have world scope.
GALLAGHER: How can I easily turn Jabber into the transporter of XML format data (TRANSD)? Miller: To answer this question, let's take a look at how XML is applied to Jabber. In an instant messaging system, customers need to establish and maintain relationships with the server (indicating that you are currently online). The server must be able to generate a message at any time and send it to the customer. We are done by simple TCP socket. Any customer can establish a Socket connection with the server. (See Figure 1)
Next, we must decide how to send and receive this data. We want to use XML, and customer and server must be sent in asynchronous mode, at any time. At that time, there was no other transport layer protocol to complete this work. HTTP cannot work in this mode, although SMTP can, but not what we want. Finally, we decided to connect this TCP Socket connection as an XML document. When the connection between the two sides is just beginning to establish a relationship, we start to send an XML data snippet from the root node of the document. On the other side of the connection, the continuously connected data is decoded, and this job can be done.
In the upper layer of XML data stream, we define three protocol types: Message, performance (Presence), and information query (InfoQuery ---- IQ). Information query is a universal package that is added outside of other XMLs, such as a list of friends, V-card. In fact, remove messages and performance, there must be information inquiry. You can insert your defined XML data into the message, or in your performance, but you must be in your own name space.
Gallagher: Can I use anything in IQ tag? For example, customers call other types of function calls between customers? Miller: Of course.
Gillmor: Can you encapsulate the SOAP call in the IQ tag? Miller: No problem, in fact we have done this. Moreover, we also placed an HTTP transporter (HTTP Transport) on the server side, which is used to restore the packaged call into a real SOAP call. Take a look at those XML namespaces and DTDs, you can insert XML data into these messages, express, and IQ. You can provide some services on the server, either, either directly inserting XML data, such as adding data to your ongoing dialog. At the client, if it meets the added XML data, it can be displayed. Otherwise, it is as not seen, and you can still get other messages.
GALLAGHER: Apply the Jabber interface to an application so that it has a chat function, display a list of friends, and communicates with other users through Jabbber messages. Miller: I hope to write these applications. This is not a difficult thing.
GILLMOR: JABBER's architecture will become part of other architectures or prototypes? For example, Ray Ozzie's Groove system structure? Miller: Jabber is designed to be unrelated to the agreement. At the server side, we get the basic XML data sheets, switched to other transport layers, such as placing an ICQ network or other instant messaging system. Based on the SMTP gateway and the HTTP gateway, we established SOAP and XML RPC. Add a new gateway, such as the system connected to the Ray Ozzie, nothing more than accessing its network, and converts the XML data used by Jabber and the XML of Jabber or the data of the data. The advantage of doing this is that the Jabber application or the client can transparently access anything on the network of the connected side, because the conversion work is done at the server side. Other new networks can be supported in the application of Jabber's upper-level constructed application without any modifications and addition.
GILLMOR: Do you use Apache? For example, Parser and XSL Engines? Miller: Jabber server is C. So we use James Clark-based Parser based. Some parts of the project use Apache tools.
GILLMOR: Does any support for the Document Object Model (DOM)? Miller: Because we do not involve the interface display of HTML and XML, there is no scripting language in the client, so there is no reason to use DOM. GALLAGHER: Do you really need to drive models with SAX? Miller: Yes, used to extract messages and performance. If you need to display the extracted XML data in a customized way, you can do it casually.
GILLMOR: Do you have any ideas, about how to apply your agreement? Is it directly embedded in the browser? Or do you make a separate instant messaging client? MILLER: In fact, there is already a Mozilla-based Jabber client in development. This is an out-in assembly as a platform that can take advantage of Jabber. However, the idea of browser design is not used to receive these real-time event messages, and the way to handle Socket is not what we want, the browser is based on "Pull" model. And the operation must be initialized in the browser, so it is difficult to map some instant messaging models into the browser because they are not designed like this. GILLMOR: What is the consideration of bandwidth? Miller: We used to count Jabber.org and Jabber.com's access data traffic, you can run Jabber on 300 baud's Modem. Some people say that XML efficiency is too low, but even in the case of we do not compress, XML has little effect on bandwidth.
GILLMOR: How does it, have you encrypt data streams?
MILLER: The server supports SSL; for the client, it is optional. We have defined an option that customers can decide to encrypt messages and performances, including XML data in the message. You can put XML in any place in messages and performance. The Jabber architecture is handed over to services and applications for XML data that is transferred. Jabber is just a universal XML routing framework. It communicates with the other party according to the user or the other party, not just the URL and IP addresses.
GALLAGHER: Because you only include the most basic structure, it has opened up a wide range of application potential. Miller: I am very happy to think of so many applications. We have a module to chat with your speech in your chat, and then transfer. In 1997 I saw XML for the first time, time flies. In the future, all application data will be defined using XML. We want to let the network system understand the XML, so that XML data is flexible and routing, so we can easily integrate XML into our procedure between our nodes. Related links: www.jabber.org