ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Net-XMPP2/README
Revision: 1.3
Committed: Thu Jul 5 17:43:30 2007 UTC (17 years, 8 months ago) by elmex
Branch: MAIN
Changes since 1.2: +107 -16 lines
Log Message:
last changes and now it's uploaded to CPAN!

File Contents

# Content
1 NAME
2 Net::XMPP2 - An implementation of the XMPP Protocol
3
4 VERSION
5 Version 0.01
6
7 SYNOPSIS
8 use Net::XMPP2::Connection;
9
10 or:
11
12 use Net::XMPP2::IM::Connection;
13
14 or:
15
16 use Net::XMPP2::Client;
17
18 DESCRIPTION
19 This is the head module of the Net::XMPP2 XMPP client protocol (as
20 described in RFC 3920 and RFC 3921) framework.
21
22 Net::XMPP2::Connection is a RFC 3920 conformant "XML" stream
23 implementation for clients, which handles tcp connect up to the resource
24 binding. And provides low-level access to the XML nodes on the XML
25 stream along with some high level methods to send the predefined XML
26 stanzas.
27
28 Net::XMPP2::IM::Connection is a more highlevel module, which is derived
29 from Net::XMPP2::Connection. It handles all the instant messaging client
30 functionality described in RFC 3921.
31
32 Net::XMPP2::Client is a multi account client class. It manages
33 connections to multiple XMPP accounts and tries to offer a nice
34 highlevel interface to XMPP communication.
35
36 For a list of "Supportet extensions" see below.
37
38 There are also other modules in this distribution, for example:
39 Net::XMPP2::Util, Net::XMPP2::Writer, Net::XMPP2::Parser and those I
40 forgot :-) Those modules might be helpful and/or required if you want to
41 use this framework for XMPP.
42
43 See also Net::XMPP2::Writer for a discussion about the brokeness of XML
44 in the XMPP specification.
45
46 If you have any questions or seek for help look below under "SUPPORT".
47
48 REQUIREMENTS
49 One of the major drawbacks I see for Net::XMPP2 is the long list of
50 required modules to make it work.
51
52 AnyEvent
53 For the I/O events and timers.
54
55 XML::Writer
56 For writing "XML".
57
58 XML::Parser::Expat
59 For parsing partial "XML" stuff.
60
61 MIME::Base64
62 For SASL authentication
63
64 Authen::SASL
65 For SASL authentication
66
67 Net::LibIDN
68 For stringprep profiles to handle JIDs.
69
70 Net::SSLeay
71 For SSL connections.
72
73 Net::DNS
74 For SRV RR lookups.
75
76 And yes, all these are essential for XMPP communication. Even thought
77 'instant messaging' and 'presence' is a quite simple problem XMPP
78 somehow was successful at complicating the task enough to keep me busy
79 for a long time. But all that time wasn't only for the technology
80 required to get it started, mostly it was for all the quirks, hacks and
81 badly applied "XML" in the protocol which complicated the matter.
82
83 RELEASE NOTES
84 Here are some notes to the releases (release of this version is at top):
85
86 Version
87 * 0.01
88 This release has beta status. The code is already used daily in my
89 client and I keep looking out for bugs. If you find undocumented,
90 missing or faulty code/methods please drop me a mail! See also
91 "BUGS" below.
92
93 Potential edges when using this module: sparely documented methods,
94 missing functionality and generally bugs bugs and bugs. Even thought
95 this module is in daily usage there are still lots of cases I might
96 have missed.
97
98 For the next release I'm planning to provide more examples in the
99 documentation and/or samples/ directory, along with bugfixes and
100 enhancements along with some todo items killed from the TODO file.
101
102 TODO
103 There are still lots of items on the TODO list (see also the TODO file
104 in the distribution of Net::XMPP2).
105
106 Why (yet) another XMPP module?
107 The main outstanding feature of this module in comparsion to the other
108 XMPP (aka Jabber) modules out there is the support for AnyEvent.
109 AnyEvent permits you to use this module together with other I/O event
110 based programs and libraries (ie. Gtk2 or Event).
111
112 The other modules could often only be integrated in those applications
113 or librarys by using threads. I decided to write this module because I
114 think CPAN lacks an event based XMPP module. Threads are unfortunately
115 not an alternative in Perl at the moment due the limited threading
116 functionality they provide and the global speed hit. I also think that a
117 simple event based I/O framework might be a bit easier to handle than
118 threads.
119
120 Another thing was that I didn't like the APIs of the other modules. In
121 Net::XMPP2 I try to provide low level modules for speaking XMPP as
122 defined in RFC 3920 and RFC 3921 (see also Net::XMPP2::Connection and
123 Net::XMPP2::IM::Connection). But I also try to provide a high level API
124 for easier usage for instant messaging tasks and clients (eg.
125 Net::XMPP2::Client).
126
127 A note about TLS
128 This module also supports TLS, as the specification of XMPP requires an
129 implementation to support TLS.
130
131 There are maybe still some bugs in the handling of TLS in
132 Net::XMPP2::Connection. So keep an eye on TLS with this module. If you
133 encounter any problems it would be very helpful if you could debug them
134 or at least send me a detailed report on how to reproduce the problem.
135
136 (As I use this module myself I don't expect TLS to be completly broken,
137 but it might break under different circumstances than I have here. Those
138 circumstances might be a different load of data pumped through the TLS
139 connection.)
140
141 I mainly expect problems where aviable data isn't properly read from the
142 socket or written to it. You might want to take a look at the
143 "debug_send" and "debug_recv" events in Net::XMPP2::Connection.
144
145 Supportet extensions
146 See Net::XMPP2::Ext for a list.
147
148 EXAMPLES
149 See "samples/test_client" for a first pointer. More examples will be
150 included in later releases, please feel free to ask the "AUTHOR" if you
151 have any questions about the API. There is also an IRC channel, see
152 "SUPPORT".
153
154 AUTHOR
155 Robin Redeker, "<elmex at ta-sa.org>", JID: "<elmex at jabber.org>"
156
157 BUGS
158 Please note that I'm currently (July 2007) the only developer on this
159 project and I'm very busy with my studies in Computer Science in Summer
160 2007. If you want to ease my workload or want timely releases please
161 send me patches instead only bug reports or feature requests. I won't
162 forget the reports or requests if you can't or didn't send patches but
163 it can take a long time until I get enough time to fix/implement them.
164
165 Also try to be as precise as possible with bugreports and best, if you
166 can't send a patch, would be if you find out which code doesn't work and
167 tell me why.
168
169 Please report any bugs or feature requests to "bug-net-xmpp2 at
170 rt.cpan.org", or through the web interface at
171 <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net-XMPP2>. I will be
172 notified, and then you'll automatically be notified of progress on your
173 bug as I make changes.
174
175 SUPPORT
176 You can find documentation for this module with the perldoc command.
177
178 perldoc Net::XMPP2
179
180 You can also look for information at:
181
182 * IRC: Net::XMPP2 IRC Channel
183 IRC Network: http://freenode.net/
184 Server : chat.freenode.net
185 Channel : #net_xmpp2
186
187 Feel free to join and ask questions!
188
189 * Net::XMPP2 Project Site
190 <http://www.ta-sa.org/>
191
192 * AnnoCPAN: Annotated CPAN documentation
193 <http://annocpan.org/dist/Net-XMPP2>
194
195 * CPAN Ratings
196 <http://cpanratings.perl.org/d/Net-XMPP2>
197
198 * RT: CPAN's request tracker
199 <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Net-XMPP2>
200
201 * Search CPAN
202 <http://search.cpan.org/dist/Net-XMPP2>
203
204 ACKNOWLEDGEMENTS
205 Thanks to the XSF for the development of an open instant messaging
206 protocol (even thought it uses "XML").
207
208 And thanks to all people who had to listen to my desperate curses about
209 the brokeness/braindeadness of XMPP, without you I would've never
210 brought this module to a usable state.
211
212 COPYRIGHT & LICENSE
213 Copyright 2007 Robin Redeker, all rights reserved.
214
215 This program is free software; you can redistribute it and/or modify it
216 under the same terms as Perl itself.
217