XMPP, the protocol used by JSXC, identifies every user by a JID. This JID has the same format as an email address: a local part (typically user name) and a domain name, separated by @. The advantage of this notation is that organizations providing both email (typically asynchronous) and XMPP (typically synchronous) communication, can provide both services with one mnemonic ID. This allows for integrated and unified communication, where a single ID can be used for email, instant messaging, and audio/video communications; thus alleviating the need for users to remember multiple IDs, such as (non-mnemonic) telephone numbers, video conference IDs, and so on.
Even though both XMPP and email use the same address format, they are distinct services, not unlike fax, text messages (SMS), and voice telephony using a single telephone number format, even though the services differ in what they exchange, the protocol, and the typical uses.
Unlike proprietary instant messaging services, XMPP allows anyone operating a domain and a server to provide XMPP service for its users. XMPP was designed from the start to allow these servers to easily interoperate, making it easy for userA@serverA to communicate with userB@serverB, as if they were on the same server. This federated design enables privacy from the start, there is no central authority which knows what you are doing when and who your friends are. Only servers with a need to know (because they host an account for one of your friends) will ever know anything about you; third parties remain ignorant.
For this section, we assume that you are using JSXC with unified login, i.e., logging in to your web application such as SOGo or ownCloud will also log you into your JSXC XMPP Chat. This is the default and recommended way to run JSXC.
After successful login, the right hand side of your application will show the JSXC bar. During the first login with a browser, the JSXC bar will display that it is creating your security key. After a short while, the display will change to your roster. Already during key generation, you can use the main application as before. JSXC functions will only be available after key generation finishes. The key is safely stored in your browser and not sent to any server.
If you would like to use more screen real estate for your application, you can resize or hide the JSXC bar by dragging or clicking the vertical dividing line to the main application. A hidden JSXC bar can be restored by clicking on the right edge of the window. Your web browser will remember the bar visibility.
If you have previously used XMPP for that account, e.g., from another JSXC-enabled application or a native XMPP/Jabber client, your roster — the list appearing in the JSXC bar after the login — will already be populated with the contacts. As with all XMPP clients, the roster is stored on the XMPP server, so your contact list will be available to any XMPP client, including JSXC.
To add a contact, click on the gear icon at the bottom right corner and select Add Buddy; then enter the JID (typically the email address) of your buddy, optionally with a (nick) name under which the buddy should be shown in your roster. This nick name is only visible to you; so feel free to make them easy for you to remember. If no full name is given, then the JID will be displayed.
The person you just added will receive a friendship notification in their chat client. If they are offline, this request will wait for them to go online.
Once you have a lot of contacts and only want to see those who are online, you can select Hide Offline from the gear icon menu.
When hovering the mouse over a contact, two icons will float in from the right: A pen to edit the name, and a cross to delete it. Clicking on the pen icon will make the name editable. Hitting return will change the entry in your roster. The name you entered will be active on all your XMPP clients connecting to this account. Other users, including the contact, will not know what you have entered there.
If you empty the nickname, the JID will be displayed. This can also be helpful if you played around with nicknames so much that you confused yourself.
When hovering the mouse over a contact, two icons will float in from the right: A pen to edit the name, and a cross to delete it. Clicking on the cross icon will delete the contact from your roster and will revoke their right of seeing your online status. If you do that by mistake, simply add the user again.
In a chat, several events can happen. For example, someone may add you to their roster and would like to your presence status and thus be able to see whether you are online. Such events are listed at the bottom right with the pending event count on yellow background. Clicking on it reveals the requests, which you can then handle, e.g., deny or accept the friendship request.
When your chat tab or window is not active, most browsers now offer the ability to notify you through the operating system, often with a message appearing in one of the screen corners. This allows you to continue your work while being able to immediately respond to incoming requests or messages.
To prevent abuse, web pages by default do not have the right to pop up such notification messages. On the first message JSXC receives while inactive, it will therefore ask you whether it should notify you about background activity in the future. The browser will ask for your confirmation.
You can tell your contacts whether you are available, e.g. by setting the status to away or do not disturb. Your contacts will see this by the colored bar left of their roster entry for you which will change to yellow or red as a result of this choice.
Finally! You know your way around JSXC and can start to chat with your friends or coworkers! Just click on one of your contacts and a chat window will open. Click on another contact, and – yes, a second chat window will open. If they are using up too much screen real estate, click at the bottom of a chat window to minimize it or on the X on the top right to close it. The bottom bar of a chat window will flash even when minimized.
Reopening a chat window will restore the chat history. The chat history is only saved in your browser and can be deleted using the gear icon in the chat window.
The actual chat process is straightforward: Type into the Message input field and hit return; your message and the answers will appear in the chat window.
If your XMPP server is configured correctly, all communication between JSXC and the XMPP server is encrypted. However, if you have contacts on other servers, the communication between those two servers may not always be. Even though encryption is activated on more servers every day, e.g., communication with Google Talk servers is guaranteed to go over the network unencrypted.
You are not sure about your system configuration, have something sensitive to discuss, or just want an extra layer of security and privacy? End-to-end encryption of your messages can be added by clicking on the padlock icon. On the first use, the padlock will turn orange to indicate that your messages are being sent encrypted.
To ensure that the messages are actually encrypted to the correct person, you should authenticate your contact. Using the chat window's gear menu at the top left, you can start authentication.
Authentication comes in three flavors:
- Manually verifying the fingerprint of both parties' keys
- Providing a question to which only your contact knows the answer
- Entering a secret you agreed on offline
Once authentication has successfully completed, the padlock will turn green, stating that the messages exchanged between the two of you are end-to-end encrypted with nobody eavesdropping in between.
To start a video chat, click on the camera icon (right of the padlock). A end-to-end encrypted audio and video connection, secured by SRTP, will then be set up to your chat peer. To protect your privacy, the web browser will require confirmation before allowing JSXC access to your camera and microphone. Enjoy!