All Projects → pazznetwork → ngx-chat

pazznetwork / ngx-chat

Licence: MIT license
Angular XMPP Client & Chat UI

Programming Languages

typescript
32286 projects
HTML
75241 projects
Less
1899 projects

Projects that are alternatives of or similar to ngx-chat

Dino
Modern XMPP ("Jabber") Chat Client using GTK+/Vala
Stars: ✭ 1,637 (+5356.67%)
Mutual labels:  xmpp, jabber
Smack
Smack is an open-source, highly modular, easy to use, XMPP client library written in Java for Java SE compatible JVMs and Android.
Stars: ✭ 2,267 (+7456.67%)
Mutual labels:  xmpp, jabber
Vk4xmpp
Jabber-транспорт для ВКонтакте (A jabber gateway to the VK social network)
Stars: ✭ 114 (+280%)
Mutual labels:  xmpp, jabber
Kaidan
[Replaced by https://invent.kde.org/network/kaidan] Kaidan, a simple and user-friendly Jabber/XMPP client for every device and platform.
Stars: ✭ 67 (+123.33%)
Mutual labels:  xmpp, jabber
Lurch4Adium
OMEMO Xtra for Adium (packaging the lurch and carbons libpurple plugins)
Stars: ✭ 38 (+26.67%)
Mutual labels:  xmpp, jabber
Beagle Im
XMPP client for macOS based on TigaseSwift XMPP library
Stars: ✭ 86 (+186.67%)
Mutual labels:  xmpp, jabber
Tigase Server
Highly optimized, extremely modular and very flexible XMPP/Jabber server
Stars: ✭ 170 (+466.67%)
Mutual labels:  xmpp, jabber
Inverse.js
inVerse: A fullscreen, single-page, XMPP-chat application.
Stars: ✭ 10 (-66.67%)
Mutual labels:  xmpp, jabber
Converse.js
Web-based XMPP/Jabber chat client written in JavaScript
Stars: ✭ 2,745 (+9050%)
Mutual labels:  xmpp, jabber
Lurch
XEP-0384: OMEMO Encryption for libpurple.
Stars: ✭ 245 (+716.67%)
Mutual labels:  xmpp, jabber
Hxmpp
Haxe XMPP library
Stars: ✭ 61 (+103.33%)
Mutual labels:  xmpp, jabber
xmpp-php
PHP client library for XMPP (Jabber) protocol
Stars: ✭ 33 (+10%)
Mutual labels:  xmpp, jabber
Omemo Top
Tracking the Progress of OMEMO Integration in various clients
Stars: ✭ 47 (+56.67%)
Mutual labels:  xmpp, jabber
Mongooseim
MongooseIM is a mobile messaging platform with focus on performance and scalability
Stars: ✭ 1,387 (+4523.33%)
Mutual labels:  xmpp, jabber
Rtb
Benchmarking tool to stress real-time protocols
Stars: ✭ 35 (+16.67%)
Mutual labels:  xmpp, jabber
Blabber.im
blabber.im basiert auf Conversations und ist ein Open Source XMPP/Jabber Messenger für Android 4.1+
Stars: ✭ 124 (+313.33%)
Mutual labels:  xmpp, jabber
Ejabberd
Robust, Ubiquitous and Massively Scalable Messaging Platform (XMPP, MQTT, SIP Server)
Stars: ✭ 5,077 (+16823.33%)
Mutual labels:  xmpp, jabber
Jackal
Instant messaging server for the Extensible Messaging and Presence Protocol (XMPP).
Stars: ✭ 899 (+2896.67%)
Mutual labels:  xmpp, jabber
Openfire
Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache License. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). Openfire is incredibly easy to setup and administer, but offers rock-solid security and performance.
Stars: ✭ 2,423 (+7976.67%)
Mutual labels:  xmpp, jabber
stork
(M) Android XMPP Client
Stars: ✭ 51 (+70%)
Mutual labels:  xmpp, jabber

Get Started | Get Help | Get Involved

Build status Coverage maintained - yes contributions - welcome Made with TypeScript Made with Node.js Made with Node.js

view - Documentation

This library provides an out-of-the-box usable XMPP chat component. It is customizable and offers an API to integrate it with your application. This library provides an out-of-the-box usable XMPP chat component. It is customizable and offers an API to integrate it with your application.

Features

  • connect to XMPP servers via websocket
  • send and receive messages
  • load messages from message history (XEP-0313)
  • use the server side buddy list or use your own data source for that, API methods for adding / removing buddies available
  • supports multi-user chat

screenshot

Have a look at our demo (valid XMPP credentials required)

  • 🌋 build in XMPP server support
    • send and receive messages, load messages from message history (XEP-0313), supports multi user chat
  • 🔥 fully featured angular chat components
  • 💉 open for injection
    • use the server side buddy list or use your own data source for that, API methods for adding / removing buddies available
    • replace the chat service with an own interface implementations to change the chat server

Table of Contents

  • Get Started
    • Compatibility
    • Installation and usage
  • Get Help
    • Documentation
    • FAQ
  • Get Involved
    • Development
    • Build the plugin
    • Run the plugin tests
    • Releasing

Get Started

Compatibility

  • Angular 14 (ngx-chat 0.14.x)
  • Angular 13 (ngx-chat 0.13.x)
  • Angular 12 (ngx-chat 0.12.x)
  • Angular 11 (ngx-chat 0.11.x)
  • Angular 10 (ngx-chat 0.10.x)
  • Angular 9 (ngx-chat 0.9.x)
  • Angular 8 (ngx-chat 0.4.x)
  • Angular 6 (ngx-chat 0.3.x)
  • requires node >= 16.16 && npm >= 8.11 for build

Installation and usage

These instructions require Angular 12.

First install ngx-chat and its dependencies via npm:

npm install --save @pazznetwork/ngx-chat @xmpp/client@~0.9.2 @angular/cdk@~14.0.5

After that, import ngx-chat in your root module:

@NgModule({
    ...
    imports: [
        ...
        NgxChatModule.forRoot(),
        BrowserAnimationsModule, // alternatively NoopAnimationsModule 
    ],
    ...
})

Add the ngx-chat-component at the end of your root component template:

<ngx-chat></ngx-chat>

You are now ready to go. You will not see anything until you log in. Log in via ngx-chat wherever you want (e.g. in a component or a service) by injecting ChatService and calling login:

constructor(@Inject(CHAT_SERVICE_TOKEN) chatService: ChatService) {
    chatService.logIn({
        domain: 'ngx-chat.example',
        service: 'wss://ngx-chat.example:5280/websocket',
        password: 'password',
        username: 'someuser',
    });
}

Add the following to polyfills.ts:

/***************************************************************************************************
 * APPLICATION IMPORTS
 */
(window as any).global = window;

Optional: body padding when roster list is expanded

Add css styling like the following to your main styles.css if you want to resize your main content when the roster is expanded.

body {
    transition-property: padding-right;
    transition-duration: 0.4s;
    padding-right: 0;
}

body.has-roster {
    padding-right: 14em;
}

Get Help

Documentation

Below you will find some instructions to getting started. Have a look at the wiki for more FAQ's and abstract documentation.

For a api, architecture and code overview checkout our ** compo**doc documentation.

FAQ

Q: Which browsers are supported?
A: It is tested in Chrome, Safari and Firefox.

Q: Does ngx-chat work with self-signed certificates?
A: Yes, if the following criteria are met:

  • the certificate has to be trusted by the browser you are using. Chrome uses the operating system trust store for certificates while Firefox has a custom implementation.
  • the common name (CN) matches the uri of the service you are connecting to

Q: Can ngx-chat be used without the UI?
A: Yes. Inject the chat service via @Inject(CHAT_SERVICE_TOKEN) public chatService: ChatService, login via logIn and start sending messages via the sendMessage method.

Q: My question is not answered
A: No problem, feel free to raise an issue.

Get Involved

Development

WARNING Pay attention to your imports in the testing app: '@pazznetwork/ngx-chat' instead of '../../../projects/pazznetwork/ngx-chat/src/lib/services/adapters/xmpp/plugins/multi-user-chat.plugin'

Pull requests are welcome!

The source code for ngx-chat can be found in the projects/pazznetwork/ngx-chat folder. The demo application is in the src folder in the project root.

# clone this repository
git clone [email protected]:pazznetwork/ngx-chat.git
cd ngx-chat

# install dependencies
npm install

# build the library continuously
ng build @pazznetwork/ngx-chat --watch

# (in another terminal) build the sample app continuously
# will run the demo application on
# http://localhost:4200
ng serve

Build the plugin

npm run build-lib

Test the integration of your project with the plugin

$fileOutDirPath is your npm run build out-dir path

npm install $fileOutDirPath

Run the plugin tests

npm run test:once

Committing

For clean and standardised commit messages we use commit lint, for the format see: https://www.conventionalcommits.org/en/v1.0.0/.

Releasing

npm run build-lib is necessary because otherwise creates a package with ngcc and throws on publish the following error:
trying to publish a package that has been compiled by ngcc

# increment version number in projects/pazznetwork/ngx-chat/package.json
VERSION=0.14.13 # change accordingly
npm run changelog
git add .
git commit -m "docs: release $VERSION"
git tag v$VERSION
git push origin master --tags
./push-release.sh
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].