Giter Club home page Giter Club logo

chat's Introduction

Tinode Instant Messaging Server

Instant messaging server. Backend in pure Go (license GPL 3.0), client-side binding in Java for Android and Javascript (license Apache 2.0), persistent storage RethinkDB, JSON over websocket (long polling is also available). Tinode is meant as a replacement for XMPP. Overall it's a lot like open source WhatsApp or Telegram.

Version 0.13. This is beta-quality software: feature-complete but probably with a few bugs. Follow instructions to install and run. Read API documentation.

A javascript demo is (usually) available at http://api.tinode.co/x/example-react-js/ (source). Login as one of alice, bob, carol, dave, frank. Password is <login>123, e.g. login for alice is alice123. You can discover other users by email or phone by prefixing them with email: or tel: respectively. Emails are <login>@example.com, e.g. [email protected], phones are 17025550001 through 17025550009. The demo server is reset (all data wiped) every night at 3:15 am Pacific time. Android demo is mostly stable and functional. See screenshots below.

Why?

XMPP is a mature specification with support for a very broad spectrum of use cases developed long before mobile became important. As a result most (all?) known XMPP servers are difficult to adapt for the most common use case of a few people messaging each other from mobile devices. Tinode is an attempt to build a modern replacement for XMPP/Jabber focused on a narrow use case of instant messaging between humans with emphasis on mobile communication.

Features

Supported

  • Android and web clients.
  • One-on-one messaging.
  • Group messaging with currently unlimited number of members where every member's access permissions are managed individually. The maximum number of members will be limited to a reasonably high value in the future (256? configurable?).
  • Topic access control with permissions for various actions.
  • Server-generated presence notifications for people, topics.
  • Basic sharded clustering.
  • Persistent message store, paginated message history.
  • Javascript bindings with no dependencies.
  • Android Java bindings (dependencies: jackson, nv-websocket-client)
  • Websocket and long polling transport.
  • JSON wire protocol.
  • User search/discovery.
  • Message status notifications: message delivery to server; received and read notifications; typing notifications.
  • Support for client-side caching.
  • Ability to block unwanted communication server-side.
  • Authentication support customizable at compile time.
  • Anonymous users (important for use cases related to tech support over chat).
  • Mobile push notifications using FCM.

Planned

  • iOS client bindings and client.
  • Rich formatting of messages and media transfer.
  • Security: TLS for all communications plus OTR for one-on-one messaging and undecided method for group mesaging.
  • Group messaging with unlimited number of members with bearer token access control.
  • Failover/hot standby/replication.
  • Federation.
  • Different levels of message persistence (from strict persistence to "store until delivered" to purely ephemeral messaging).
  • Support for binary wire protocol.
  • Support for other SQL and NoSQL backends.
  • Plugins to enable chat bots.

Screenshots

Android

android screenshot android screenshot

Desktop Web

Desktop web: full app

Mobile Web

Mobile web: contacts Mobile web: chat Mobile web: topic info

chat's People

Contributors

or-else avatar pkrs avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

rstorr daanikus

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.