Serveur de messagerie instantanée Tinode
Pile complète de messagerie instantanée. Backend en Go pur (licence GPL 3.0), clients pour Android (Java), iOS (Swift) et web (ReactJS), ainsi que support client gRPC pour C++, C#, Go, Java, Node, PHP, Python, Ruby , Objective-C, etc (tous les clients sous licence Apache 2.0). Le transport filaire s'effectue en JSON via websocket (une interrogation longue est également disponible) ou en protobuf avec gRPC.
Il s'agit d'un logiciel de qualité bêta : complet et stable mais probablement avec quelques bugs ou fonctionnalités manquantes. Suivez les instructions pour installer et exécuter ou utiliser l'un des services cloud ci-dessous. Lisez la documentation de l'API.
Tinode n'est pas XMPP/Jabber. Il n'est pas compatible avec XMPP. Il est destiné à remplacer XMPP. En apparence, cela ressemble beaucoup à WhatsApp ou Telegram open source.
Pourquoi?
La promesse de XMPP était de fournir une messagerie instantanée fédérée : n'importe qui pourrait créer un serveur de messagerie instantanée capable d'échanger des messages avec n'importe quel autre serveur XMPP dans le monde. Malheureusement, XMPP n'a jamais tenu cette promesse. Les messageries instantanées sont encore un ensemble de jardins clos incompatibles, semblables à ce qu'AoL de la fin des années 1990 était pour l'Internet ouvert.
L'objectif de ce projet est de concrétiser la vision originale de XMPP : créer une plate-forme ouverte et moderne pour la messagerie instantanée fédérée en mettant l'accent sur la communication mobile. Un objectif secondaire est de créer une plateforme de messagerie instantanée décentralisée qui soit beaucoup plus difficile à suivre et à bloquer par les gouvernements.
Un NON-objectif explicite : nous ne construisons pas un énième remplacement de Slack.
Installation et exécution
Voir les instructions générales ou les instructions spécifiques au Docker.
Obtenir de l'aide
- Lisez la documentation de l'API et la FAQ. Lisez les instructions de configuration contenues dans le fichier
tinode.conf
. - Pour obtenir de l'aide, des questions générales et des discussions, publiez-les sur https://groups.google.com/d/forum/tinode.
- Pour les bogues et les demandes de fonctionnalités, ouvrez un problème.
- Utilisez https://tinode.co/contact pour les demandes commerciales.
Aider
- Si vous appréciez notre travail, aidez-nous à faire passer le message ! Le partage sur Reddit, HN et d'autres communautés aide plus que vous ne le pensez.
- Pensez à acheter une assistance payante : https://tinode.co/support.html
- Si vous êtes un développeur de logiciels, envoyez-nous vos pull request avec des corrections de bugs et de nouvelles fonctionnalités.
- Si vous utilisez l'application et découvrez des bugs ou des fonctionnalités manquantes, faites-le-nous savoir en déposant des rapports de bugs et des demandes de fonctionnalités. Votez pour les demandes de fonctionnalités existantes que vous trouvez les plus utiles.
- Si vous parlez une langue autre que l'anglais, traduisez les applications dans votre langue. Vous pouvez également réviser et améliorer les traductions existantes.
- Si vous êtes un expert UI/UX, aidez-nous à peaufiner l'interface utilisateur de l'application.
- Utilisez-le : installez-le pour vos collègues ou amis au travail ou à la maison.
Fonction publique
Un service public Tinode est disponible. Vous pouvez l'utiliser comme n'importe quelle autre messagerie instantanée. Gardez à l’esprit que les comptes démo présents dans sandbox ne sont pas disponibles dans le service public. Vous devez créer un compte en utilisant une adresse e-mail valide pour pouvoir utiliser le service.
Web
TinodeWeb, une application Web d'une seule page, est disponible sur https://web.tinode.co/ (source). Voir les captures d'écran ci-dessous.
Androïde
Tinode pour Android alias Tindroid est stable et fonctionnel (source). Voir les captures d'écran ci-dessous. Un APK de débogage est également fourni pour plus de commodité.
IOS
Tinode pour iOS alias Tinodios est stable et fonctionnel (source). Voir les captures d'écran ci-dessous.
Démo/bac à sable
Un service de démonstration en bac à sable est disponible sur https://sandbox.tinode.co/.
Connectez-vous en tant qu'un des alice
, bob
, carol
, dave
, frank
. Le mot de passe est <login>123
, par exemple, la connexion pour alice
est alice123
. Vous pouvez découvrir d'autres utilisateurs par e-mail ou par téléphone en les préfixant respectivement par email:
ou tel:
. Les e-mails sont <login>@example.com
, par exemple [email protected]
, les téléphones sont +17025550001
au +17025550009
.
Lorsque vous enregistrez un nouveau compte, il vous est demandé une adresse e-mail à laquelle envoyer le code de validation. À des fins de démonstration, vous pouvez utiliser 123456
comme code de validation universel. Le code que vous recevez dans l'e-mail est également valide.
Remarques sur le bac à sable
- Le serveur sandbox est réinitialisé (toutes les données effacées) chaque nuit à 3h15, heure du Pacifique. Un message d'erreur
User not found or offline
signifie que le serveur a été réinitialisé pendant que vous étiez connecté. Si vous le voyez sur le Web, rechargez et reconnectez-vous. Sur Android, déconnectez-vous et reconnectez-vous. Si la base de données a été modifiée, supprimez l'application puis réinstallez-la. - L'utilisateur de Sandbox,
Tino
est un chatbot de base qui répond par une citation aléatoire à n'importe quel message. - Comme généralement accepté, lorsque vous créez un nouveau compte, une adresse e-mail vous est demandée. Le serveur enverra un e-mail avec un code de vérification à cette adresse et vous pourrez l'utiliser pour valider le compte. Pour faciliter les tests, le serveur acceptera également
123456
comme code de vérification. Supprimez la ligne "debug_response": "123456"
de tinode.conf
pour désactiver cette option. - Le serveur sandbox est configuré pour utiliser l'implémentation ACME TLS avec des exigences codées en dur pour SNI. Si vous ne parvenez pas à vous connecter, la raison la plus probable est que votre client TLS ne prend pas en charge SNI. Utilisez un autre client.
- L'application Web par défaut charge un seul bundle javascript minifié et un CSS minifié. La version non minifiée est également disponible sur https://sandbox.tinode.co/index-dev.html
- Des images Docker avec la même démo sont disponibles.
- Vous êtes invités à tester votre logiciel client par rapport au bac à sable, à le pirater, etc. Pas de DDoS cependant, s'il vous plaît.
Caractéristiques
Soutenu
- Plusieurs plateformes natives :
- Android (Java)
- iOS (Swift)
- Web (React.js)
- Ligne de commande scriptable (Python)
- Fonctionnalités utilisateur :
- Messages individuels et de groupe.
- Appels vidéo et vocaux. Messages vocaux.
- Chaînes avec un nombre illimité d'abonnés en lecture seule.
- Toutes les discussions sont synchronisées sur tous les appareils.
- Contrôle d'accès granulaire avec autorisations pour diverses actions.
- Recherche/découverte d'utilisateurs.
- Mise en forme riche des messages de style markdown : *style* → style , avec des images, des vidéos et des pièces jointes en ligne.
- Formulaires et réponses modèles adaptés aux chatbots.
- Marqueurs de compte vérifiés/personnel/non fiables.
- Notifications d'état des messages : remise du message au serveur ; notifications reçues et lues ; taper des notifications.
- Aperçu du message le plus récent dans la liste de contacts.
- Notifications de présence générées par le serveur pour les personnes, discussions de groupe.
- Transférer et répondre aux messages.
- Modification des messages envoyés.
- Administration:
- Contrôle d'accès granulaire avec autorisations pour diverses actions.
- Prise en charge des backends d'authentification personnalisés.
- Possibilité de bloquer les communications indésirables côté serveur.
- Utilisateurs anonymes (important pour les cas d'utilisation liés au support technique par chat).
- Plugins pour étendre les fonctionnalités, par exemple pour prendre en charge la modération ou les chatbots.
- Outil de ligne de commande scriptable pour l'administration du serveur.
- Performance, fiabilité et développement :
- Clustering partagé avec basculement.
- Stockage et transfert hors bande d'objets volumineux tels que des images ou des fichiers de documents à l'aide du système de fichiers local ou d'Amazon S3 (d'autres systèmes de stockage peuvent être pris en charge avec des gestionnaires de médias).
- Protocoles filaires JSON ou protobuf version 3.
- Liaisons pour différents langages de programmation :
- Javascript sans dépendances externes.
- Java avec dépendances sur Jackson et Java-Websocket. Convient pour Android mais sans dépendances au SDK Android.
- Swift sans dépendances externes.
- C/C++, C#, Go, Python, PHP, Ruby et bien d'autres langages utilisant gRPC.
- Choix d'un backend de base de données. D'autres bases de données peuvent être ajoutées en écrivant des adaptateurs.
- MySQL
- PostgreSQL
- MongoDB
- Repenser la base de données
Prévu
- Fédération.
- Partage de localisation et de contacts.
- Aperçus des documents joints, liens.
- Enregistrement de messages vidéo.
- Diffusion vidéo/audio.
- Appels vidéo/audio de groupe.
- Joindre de la musique/audio autre que des messages vocaux.
- Meilleure prise en charge des emoji.
- Différents niveaux de persistance des messages (de la persistance stricte au « stockage jusqu'à la livraison » à la messagerie purement éphémère).
- Chiffrement des messages au repos.
- Cryptage de bout en bout avec OTR pour la messagerie individuelle et méthode indécise pour la messagerie de groupe.
- Recherche en texte intégral dans les messages.
Traductions
Tous les logiciels clients prennent en charge l'internationalisation. Les traductions suivantes sont fournies :
Langue | Serveur | Application Web | Androïde | IOS |
---|
Anglais | ✓ | ✓ | ✓ | ✓ |
Chinois simplifié | ✓ | ✓ | ✓ | ✓ |
Chinois traditionnel | | ✓ | ✓ | ✓ |
Français | ✓ | ✓ | ✓ | |
Allemand | | ✓ | ✓ | |
hindi | | | ✓ | |
coréen | | ✓ | ✓ | |
portugais | ✓ | | ✓ | |
roumain | | ✓ | ✓ | |
russe | ✓ | ✓ | ✓ | ✓ |
Espagnol | ✓ | ✓ | ✓ | ✓ |
thaïlandais | | ✓ | | |
ukrainien | ✓ | ✓ | ✓ | ✓ |
vietnamien | ✓ | | | |
D'autres traductions sont les bienvenues. En plus des langues énumérées ci-dessus, l'arabe, le bengali, l'indonésien, l'ourdou, le japonais, le turc et le persan sont particulièrement intéressés.
Tierce personne
Projets
- Adaptateur de base de données Arango
- Adaptateur DynamoDB (obsolète)
Licences
- Les avatars de démonstration et quelques autres graphiques proviennent de https://www.pexels.com/ sous licence CC0 et de https://pixabay.com/ sous leur licence.
- Les modèles d'arrière-plan Web et Android proviennent de http://subtlepatterns.com/ sous licence CC BY-SA 3.0.
- Les icônes Android proviennent de https://material.io/tools/icons/ sous licence Apache 2.0.
Captures d'écran
Androïde
IOS
Web de bureau
Internet mobile
Chaînes de référencement
Mots « chat » et « messagerie instantanée » en chinois, russe, persan et quelques autres langues.
- 聊天室 即時通訊
- discuter avec le messager
- インスタントメッセージ
- 인스턴트 메신저
- پیام رسان فوری
- تراسل فوري
- فوری پیغام رسانی
- Nhắn tin tức thời
- lire mes messages
- message instantané
- instant pesan
- messagerie instantanée
- চ্যাট ইন্সট্যান্ট মেসেজিং
- चैट त्वरित संदेश
- তাৎক্ষণিক বার্তা আদান প্রদান