We need a Node.js service that does the following. Please read the description below and reply describing your experience with Node.js and any questions you may have about this description.
1. The service should accept TCP SSL connections from end users/clients who will connect and then send their username/password.
2. On receiving username and password, the service will connect to an XMPP server (like Google Talk) using the username/password. This should use the node-xmpp module: [url removed, login to view]
3. If the authentication with the XMPP server succeeds, send a success msg back to the client, or else send a failure message.
4. After the connection succeeds, forward any XML messages/stanzas from the client to the XMPP server and anything from the XMPP server to the client.
5. When the client breaks the SSL socket, keep the connection with the XMPP server open and cache any messages from the XMPP server in a queue.
6. When the client connects again in the future with the same username and password, if there is an existing open connection to the XMPP server, just send a success to the client. And send to the client any cached messages from #5 above.
7. If a successfully connected client sends a 'disconnect' message, then close the connection with the XMPP server.
8. The node.js service should accomodate any number of clients and should keep track of matching clients with their XMPP connections.
Deliverables should include:
- The node.js service
- A command-line client program in any language that acts as a client to the service
You should use Google Talk as the XMPP server.
Please see attachment with a diagram depicting the message exchange.