10000 GitHub - ArrowMeng/chat: Instant messaging server - backend in Go, client-side binding in Java and Javascript
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

ArrowMeng/chat

 
 

Repository files navigation

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). No UI components other than demo apps. Tinode is meant as a replacement for XMPP.

Version 0.8. This is alpha-quality software. Bugs should be expected. 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. 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

  • One-on-one messaging.
  • Groups (topics) with up to 16 members where every member's access permissions are managed individually.
  • 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 transport.
  • JSON wire protocol.
  • User search/discovery.
  • Message delivery status: server-generated delivery to server, client-generated received and read notifications; typing notifications.
  • Basic support for client-side message caching.
  • Ability to block unwanted communication server-side.
  • Authentication support customizable at compile-time.
  • Mobile push notifications using FCM.

Planned

  • iOS client bindings.
  • Security: TLS for all communications plus OTR for p2p topics and undecided method for group topics.
  • Support for long polling (currently exists but broken).
  • Groups (topics) 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.
  • Anonymous users.
  • Support for other SQL and NoSQL backends.
  • Plugins.

Screenshots

Web

javascript app screenshot

Android

android screenshot

javascript app screenshot

About

Instant messaging server - backend in Go, client-side binding in Java and Javascript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.5%
  • Shell 0.5%
0