GithubHelp home page GithubHelp logo

0xhexe / chat Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tinode/chat

0.0 0.0 0.0 19.52 MB

Instant messaging server; backend in Go; iOS, Android, web, command line clients; chatbots

License: GNU General Public License v3.0

Go 88.24% Shell 1.94% Python 8.54% Dockerfile 0.51% Erlang 0.09% TSQL 0.68%

chat's Introduction

Tinode Instant Messaging 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. Persistent storage RethinkDB and MySQL. A third-party DynamoDB adapter also exists. Other databases can be supported by writing custom adapters.

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.

Version 0.16. This is beta-quality software: feature-complete but probably with a few bugs. Follow instructions to install and run or use one of the cloud services below. Read API documentation.

Why?

The promise of XMPP was to deliver federated instant messaging: anyone would be able to spin up an IM server capable of exchanging messages with any other XMPP server in the world. Unfortunately, XMPP never delivered on this promise. Instant messengers are still a bunch of incompatible walled gardens, similar to what AoL of the late 1990s was to the open Internet.

The goal of this project is to deliver on XMPP's original vision: create a modern open platform for federated instant messaging with an emphasis on mobile communication. A secondary goal is to create a decentralized IM platform that is much harder to track and block by the governments.

Getting support

Public service

A public Tinode service is now available. You can register and use it just like any other instant messenger. Keep in mind that demo accounts present in sandbox are not available in the public service. You must register an account using valid email in order to use the service.

Web

TinodeWeb, a single page web app, is available at https://web.tinode.co/ (source). See screenshots below. Currently available in English, Simplified Chinese, Russian. More translations are welcome.

Android

Tindroid is stable and functional. See the screenshots below. A debug APK is provided for convenience. Currently available in English, Russian. More translations are welcome.

iOS

Tinode for iOS a.k.a. Tinodios is stable and functional (source). See the screenshots below. Currently available in English, Simplified Chinese. More translations are welcome.

Android

Tinode for Android a.k.a. Tindroid is stable and functional (source). See the screenshots below.

Demo/Sandbox

A sandboxed demo service is available at https://sandbox.tinode.co/.

Log in 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.

If you register a new account you are asked for an email address to send validation code to. For demo purposes you may use 123456 as a universal validation code. The code you get in the email is also valid.

Sandbox Notes

  • The sandbox server is reset (all data wiped) every night at 3:15am Pacific time. An error message User not found or offline means the server was reset while you were connected. If you see it on the web, reload and relogin. On Android log out and re-login. If the database was changed, delete the app then reinstall.
  • Sandbox user Tino is a basic chatbot which responds with a random quote to any message.
  • As generally accepted, when you register a new account you are asked for an email address. The server will send an email with a verification code to that address and you can use it to validate the account. To make things easier for testing, the server will also accept 123456 as a verification code. Remove line "debug_response": "123456" from tinode.conf to disable this option.
  • The sandbox server is configured to use ACME TLS implementation with hard-coded requirement for SNI. If you are unable to connect then the most likely reason is your TLS client's missing support for SNI. Use a different client.
  • The default web app loads a single minified javascript bundle and minified CSS. The un-minified version is also available at https://sandbox.tinode.co/index-dev.html
  • Docker images with the same demo are available.
  • You are welcome to test your client software against the sandbox, hack it, etc. No DDoS-ing though please.

Features

Supported

  • Android, iOS, web, and command line clients.
  • One-on-one messaging.
  • Group messaging with every member's access permissions managed individually. The maximum number of members is configurable (128 by default).
  • Topic access control with permissions for various actions.
  • Server-generated presence notifications for people, topics.
  • Support for custom authentication backends.
  • Sharded clustering with failover.
  • Persistent message store, paginated message history.
  • Javascript bindings with no external dependencies.
  • Java bindings (dependencies: Jackson, Java-Websocket). Suitable for Android but with no Android SDK dependencies.
  • Websocket, long polling, and gRPC over TCP transports.
  • JSON or protobuf version 3 wire protocols.
  • TLS with Letsencrypt or conventional certificates.
  • User search/discovery.
  • Rich formatting of messages, markdown-style: *style* → style.
  • Inline images and file attachments.
  • Forms and templated responses suitable for chatbots.
  • Message status notifications: message delivery to server; received and read notifications; typing notifications.
  • Support for client-side data caching.
  • Ability to block unwanted communication server-side.
  • Anonymous users (important for use cases related to tech support over chat).
  • Android and web push notifications using FCM.
  • Storage and out of band transfer of large objects like video files using a local file system or Amazon S3.
  • Plugins to extend functionality like enabling chatbots.

Planned

  • Federation.
  • End to end encryption with OTR for one-on-one messaging and undecided method for group messaging.
  • Group messaging with an unlimited number (or hundreds of thousands) of members with bearer token access control.
  • Hot standby.
  • Different levels of message persistence (from strict persistence to "store until delivered" to purely ephemeral messaging).

Third-Party Licenses

Screenshots

Android screenshot: list of chats Android screenshot: one conversation

iOS screenshot: list of chats iOS screenshot: one conversation iOS screenshot: account settings

Desktop web: full app

Mobile web: contacts Mobile web: chat Mobile web: topic info Mobile web: start new 1:1 chat

SEO Strings

Words 'chat' and 'instant messaging' in Chinese, Russian, Persian and a few other languages.

  • 聊天室 即時通訊
  • чат мессенджер
  • インスタントメッセージ
  • 인스턴트 메신저
  • پیام‌رسانی فوری گپ
  • تراسل فوري
  • Nhắn tin tức thời
  • anlık mesajlaşma sohbet
  • mensageiro instantâneo
  • pesan instan
  • mensajería instantánea

chat's People

Contributors

or-else avatar riandyrn avatar googlom avatar benderpan avatar aforge avatar taylorchristie avatar shmutalov avatar pkrs avatar fstn avatar vardef avatar vapao avatar 0xflotus avatar benisonsebastian avatar neumachen avatar tiagoalves avatar nimanozari 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.