| Zend_Jabber |
Zend Framework: Zend_Jabber Component Proposal
| Proposed Component Name | Zend_Jabber |
|---|---|
| Developer Notes | http://framework.zend.com/wiki/display/ZFDEV/Zend_Jabber |
| Proposers | Maciek Ruckgaber Sergej Andrejev |
| Revision | 1.0 - 21 July 2007: Ready for comments (wiki revision: 33) |
Table of Contents
1. Overview
Zend_Jabber is a component allowing communication in Jabber/XMPP network.
2. References
3. Component Requirements, Constraints, and Acceptance Criteria
- This component will support all features required XEP-0073 ("Basic IM Protocol Suite")
- This component will not support features needed for back compability
- This component may be configured so that it will log sent/received messages
- This component may need a log file
- This component will not have a configuration file
- This component will be configured through parameters
4. Dependencies on Other Framework Components
- Zend_Exception
5. Theory of Operation
This component will allow to create send XMPP stanzas using Zend_Jabber class methods. There will also be two ways of receiving messages. User will be able to specify to wait until the response arrives or he can register a callback function wich will be executed when the response arrived. Look at a google code repository for source code.
6. Milestones / Tasks
- Milestone 1: Existing code will be ported to Zend Framework
- Milestone 2: API will be redefined as required
- Milestone 3: Working prototype checked into the incubator
- Milestone 4: Write unit tests for socket requests
- Milestone 5: Initial documentation exists.
7. Class Index
Also those are not all classes. XMPP protocol is huge. These classes will be created in the first milestone. Look at google code repository for how things really works.
- Zend_Jabber
- Zend_Jabber_Connection
- Zend_Jabber_AddressBook
- Zend_Jabber_AddressBook_Group
- Zend_Jabber_AddressBook_Item
- Zend_Jabber_User
- Zend_Jabber_Stanza_Abstract
- Zend_Jabber_Stanza_Null
- Zend_Jabber_Stanza_Unknown
- Zend_Jabber_Response_Abstract
- Zend_Jabber_Response_Presence
- Zend_Jabber_Response_Iq_Abstract
- Zend_Jabber_Response_Iq_Error
- Zend_Jabber_Response_Iq_Bind_Abstract
- Zend_Jabber_Response_Iq_Bind_Error
- Zend_Jabber_Response_Iq_Bind_Result
- Zend_Jabber_Response_Iq_Register_Abstract
- Zend_Jabber_Response_Iq_Register_Error
- Zend_Jabber_Response_Iq_Register_Result
- Zend_Jabber_Response_Iq_Roster_Abstract
- Zend_Jabber_Response_Iq_Roster_Error
- Zend_Jabber_Response_Iq_Roster_Result
- Zend_Jabber_Response_Iq_Roster_Set
- Zend_Jabber_Response_Iq_Session_Abstract
- Zend_Jabber_Response_Iq_Session_Error
- Zend_Jabber_Response_Iq_Session_Result
- Zend_Jabber_Response_Message_Abstract
- Zend_Jabber_Response_Message_Chat
- Zend_Jabber_Response_Auth_Abstract
- Zend_Jabber_Response_Auth_Failure
- Zend_Jabber_Response_Auth_Success
- Zend_Jabber_Request_Abstract
- Zend_Jabber_Request_Auth
- Zend_Jabber_Request_Iq_Abstract
- Zend_Jabber_Request_Iq_Abstract
- Zend_Jabber_Request_Iq_Bind_Abstract
- Zend_Jabber_Request_Iq_Bind_Set
- Zend_Jabber_Request_Iq_Register_Abstract
- Zend_Jabber_Request_Iq_Register_Get
- Zend_Jabber_Request_Iq_Register_Set
- Zend_Jabber_Request_Iq_Roster_Abstract
- Zend_Jabber_Request_Iq_Roster_Get
- Zend_Jabber_Request_Iq_Roster_Set
- Zend_Jabber_Request_Iq_Session_Abstract
- Zend_Jabber_Request_Iq_Session_Set
- Zend_Jabber_Request_Message_Abstract
- Zend_Jabber_Request_Message_Set
- Zend_Jabber_Request_Presence_Abstract
- Zend_Jabber_Request_Presence_Normal
- Zend_Jabber_Request_Presence_Subscribe
- Zend_Jabber_Request_Presence_Unsubscribe
8. Use Cases
| UC-01 |
|---|
Send a message to anoother jabber user:
| UC-02 |
|---|
Receive message and display it using callback function:
| UC-03 |
|---|
Display address book:
9. Class Skeletons
Zend_Jabber_Exception
Zend_Jabber
Zend_Jabber_Connection
Zend_Jabber_User
Zend_Jabber_AddressBook
Zend_Jabber_AddressBook_Group
Zend_Jabber_AddressBook_Item
Zend_Jabber_Stanza_Abstract
UML diagrams
Main classes. These classes will be most of the time used by user

Stanza

Detaild Iq request UML diagram

Detaild Iq response UML diagram

Detaild Message request UML diagram

Detaild Message response UML diagram

Detaild Presence request UML diagram

Detaild Presence response UML diagram

Is there a need for som many classes - e.g., do different messages have different behaviors/properties warranting different classes?
Well, actually, it is not a vital requirement. In the worst case I could do all this with no OOP at all, but the idea was that all messages are different thought requiring different classes.
Hi,
Is there any implemented code that I can try?
BTW I also think that unless there is a very good reason to have so many classes, it's not a good idea, and would have a bad effect on performance. If request and response messages have the same general structure, I would suggest dropping the unique message-type subclasses.
Then again I don't know the XMPP protocol very well so it might be necessary.
Hi,
is there a method to entering a conference room?
Will this be implemented? Or can you implement this?
best regards
Hey, what's the status on this component? It would be really great opportunity for ZF to have that functionality, it would allow for enormous amount of functionality with web apps
Since 'Jabber' has given way to XMPP the component should be renamed Zend_Xmpp. If it does not function as an XMPP server then it should be renamed Zend_Xmpp_Client.
I'm agree with Paul should Zend_Xmpp instead of Zend_Jabber.
What is that status of the project ?
I would like to build a "Mootools" javascript/ajax UI that works with Zend_Jabber.
Do somes examples are available somewhere ? I believe that I need persistents connections.Do Zend_Jabber support them ?
ZF Home Page
Code Browser
Wiki Dashboard
interesting