Tinode: Open-source Real-time Chat Server
Instant messaging server. Backend in pure Go (license GPL 3.0), client-side binding in Java, Javascript, and Swift, as well as gRPC client support for C++, C#, Go, Java, Node, PHP, Python, Ruby, Objective-C, etc. (license Apache 2.0). Wire transport is JSON over websocket (long polling is also available) for custom bindings, or protobuf with gRPC.
Tinode is not XMPP/Jabber. It is not compatible with XMPP. It's meant as a replacement for XMPP. On the surface, it's a lot like open source WhatsApp or Telegram.
Tindo supports many languages that include English, Chinese, French, German, Portuguese, Russian, Spanish and more.
User Features
- One-on-one and group messaging.
- Video and voice calls. Voice messages.
- Channels with unlimited number of read-only subscribers.
- All chats are synchronized across all devices.
- Granular access control with permissions for various actions.
- User search/discovery.
- Rich formatting of messages markdown-style: *style* → style, with inline images, videos, file attachments.
- Forms and templated responses suitable for chatbots.
- Verified/staff/untrusted account markers.
- Message status notifications: message delivery to server; received and read notifications; typing notifications.
- Most recent message preview in contact list.
- Server-generated presence notifications for people, group chats.
- Forwarding and replying to messages.
- Editing sent messages.
Administration Features
Granular access control with permissions for various actions.
- Support for custom authentication backends.
- Ability to block unwanted communication server-side.
- Anonymous users (important for use cases related to tech support over chat).
- Plugins to extend functionality, for example, to support moderation or chatbots.
- Scriptable command-line tool for server administration.
Performance, reliability and development
Sharded clustering with failover.
- Storage and out of band transfer of large objects like images or document files using local file system or Amazon S3 (other storage systems can be supported with media handlers).
- JSON or protobuf version 3 wire protocols.
Bindings for various programming languages:
- Javascript with no external dependencies.
- Java with dependencies on Jackson and Java-Websocket. Suitable for Android but with no Android SDK dependencies.
- Swift with no external dependencies.
- C/C++, C#, Go, Python, PHP, Ruby and many other languages using gRPC.
Multiple database backend
- Choice of a database backend. Other databases can be added with by writing adapters.
- MySQL
- PostgreSQL
- MongoDB
- RethinkDB
Supported platform
- Android (Java)
- iOS (Swift)
- Web (React.js)
- Scriptable command line (Python)
License
- GPL-3.0 License