Code Monkey home page Code Monkey logo

xmpp_client's Introduction

XMPP Chat Client - Project Overview

Table of Contents

  1. Introduction
  2. Project Objectives
  3. Development
  4. Implementation
  5. Usage
  6. Getting Started
  7. Dependencies

Introduction

The XMPP Chat Client project aims to develop a client for instant messaging that supports the XMPP (eXtensible Messaging and Presence Protocol) protocol. This protocol is open-source and designed to enable communication across different instant messaging providers. The project involves implementing essential functionalities of an XMPP client to provide a seamless and decentralized messaging experience.

Project Objectives

  • Protocol Implementation: Develop a client that adheres to the XMPP protocol's standards.
  • Understanding XMPP: Gain insight into the purpose and working of the XMPP protocol.
  • Service Functionality: Understand the core functionalities offered by the XMPP protocol.
  • Asynchronous Programming: Grasp the basics of asynchronous programming for network development.

Development

Features and Limitations

The project entails creating an XMPP client that operates based on the XMPP protocol.

User Management

  1. Register a New Account: Allow users to register a new account on the server.
  2. Login: Enable users to log in to their accounts.
  3. Logout: Provide the ability to log out from an account.
  4. Account Deletion: Allow users to delete their account from the server.

Communication

  1. Display Contacts: Display a list of contacts along with their online status.
  2. Add Contact: Allow users to add other users to their contact list.
  3. View Contact Details: Show detailed information about a selected contact.
  4. One-on-One Communication: Facilitate one-on-one conversations with any user/contact.
  5. Group Chat Participation: Enable users to participate in group conversations.
  6. Set Presence Message: Allow users to set their presence message.
  7. Send/Receive Notifications: Provide the ability to send and receive notifications.
  8. File Transfer: Allow users to send and receive files.

The project's user interface is in the form of a Command-Line Interface (CLI).

Implementation

User Management

The UserManager class provides methods to manage user-related actions, including account registration, login, contact management, and presence updates. (All the methods includes a description with javadocs)

Methods

  • addPendingNotification(NotificationP notification): Adds a pending notification to the list.
  • getPendingNotifications(): Retrieves the list of pending notifications.
  • ...

Communication

The ChatManager class handles user communication, including managing chat options and sending files.

Methods

  • manageChat(AbstractXMPPConnection connection): Manages user chat options.
  • startChatWithContact(ChatManager chatManager, String contact): Initiates a one-on-one chat with a contact.
  • ...

Usage

The XMPP Chat Client offers a command-line interface for users to interact with the application. Users can register, log in, manage contacts, participate in one-on-one chats and group conversations, set presence messages, and send/receive files.

Getting Started

  1. Clone the repository.
  2. Install the necessary dependencies (see Dependencies).
  3. Compile and run the main application.
  4. Follow the on-screen prompts to interact with the XMPP Chat Client.

Dependencies

The XMPP Chat Client relies on the following libraries:

  • Smack: Provides all the methods that I implemented
    <dependency>
      <groupId>org.igniterealtime.smack</groupId>
      <artifactId>smack-tcp</artifactId>
      <version>4.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.igniterealtime.smack</groupId>
        <artifactId>smack-extensions</artifactId>
        <version>4.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.igniterealtime.smack</groupId>
        <artifactId>smack-im</artifactId>
        <version>4.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.igniterealtime.smack</groupId>
        <artifactId>smack-java7</artifactId>
        <version>4.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.igniterealtime.smack</groupId>
        <artifactId>smack-experimental</artifactId>
        <version>4.2.0</version>
    </dependency>

PS. I created this README.md with the assistance of ChatGPT. I provided the necessary information and the desired format to generate the syntax of the file

xmpp_client's People

Contributors

christopherg19 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.