Servidor de mensagens instantâneas Tinode
Pilha completa de mensagens instantâneas. Backend em Go puro (licença GPL 3.0), clientes para Android (Java), iOS (Swift) e web (ReactJS), bem como suporte ao cliente gRPC para C++, C#, Go, Java, Node, PHP, Python, Ruby , Objective-C, etc (todos os clientes licenciados sob Apache 2.0). O transporte por fio é JSON por meio de websocket (long polling também está disponível) ou protobuf com gRPC.
Este é um software de qualidade beta: completo e estável, mas provavelmente com alguns bugs ou recursos ausentes. Siga as instruções para instalar e executar ou usar um dos serviços em nuvem abaixo. Leia a documentação da API.
Tinode não é XMPP/Jabber. Não é compatível com XMPP. É um substituto do XMPP. Superficialmente, é muito parecido com o WhatsApp ou Telegram de código aberto.
Por que?
A promessa do XMPP era fornecer mensagens instantâneas federadas: qualquer um seria capaz de criar um servidor de mensagens instantâneas capaz de trocar mensagens com qualquer outro servidor XMPP no mundo. Infelizmente, o XMPP nunca cumpriu esta promessa. Os mensageiros instantâneos ainda são um monte de jardins murados incompatíveis, semelhante ao que o AoL do final dos anos 1990 foi para a Internet aberta.
O objetivo deste projeto é cumprir a visão original do XMPP: criar uma plataforma aberta e moderna para mensagens instantâneas federadas com ênfase na comunicação móvel. Um objetivo secundário é criar uma plataforma de mensagens instantâneas descentralizada que seja muito mais difícil de rastrear e bloquear pelos governos.
Um NÃO objetivo explícito: não estamos construindo mais um substituto do Slack.
Instalando e executando
Consulte as instruções gerais ou instruções específicas do docker.
Obtendo suporte
- Leia a documentação da API e as perguntas frequentes. Leia as instruções de configuração contidas no arquivo
tinode.conf
. - Para suporte, perguntas gerais e discussões, poste em https://groups.google.com/d/forum/tinode.
- Para bugs e solicitações de recursos, abra um problema.
- Use https://tinode.co/contact para consultas comerciais.
Ajudando
- Se você aprecia nosso trabalho, ajude a divulgar! Compartilhar no Reddit, HN e outras comunidades ajuda mais do que você pensa.
- Considere comprar suporte pago: https://tinode.co/support.html
- Se você é um desenvolvedor de software, envie-nos suas solicitações pull com correções de bugs e novos recursos.
- Se você usar o aplicativo e descobrir bugs ou recursos ausentes, informe-nos preenchendo relatórios de bugs e solicitações de recursos. Vote nas solicitações de recursos existentes que você considera mais valiosas.
- Se você fala um idioma diferente do inglês, traduza os aplicativos para o seu idioma. Você também pode revisar e melhorar as traduções existentes.
- Se você é um especialista em UI/UX, ajude-nos a aprimorar a UI do aplicativo.
- Use-o: instale-o para seus colegas ou amigos no trabalho ou em casa.
Serviço público
Um serviço público Tinode está disponível. Você pode usá-lo como qualquer outro mensageiro instantâneo. Lembre-se de que as contas demo presentes no sandbox não estão disponíveis no serviço público. Você deve registrar uma conta usando um e-mail válido para usar o serviço.
Rede
TinodeWeb, um aplicativo web de página única, está disponível em https://web.tinode.co/ (fonte). Veja as capturas de tela abaixo.
Android
Tinode para Android, também conhecido como Tindroid, é estável e funcional (fonte). Veja as imagens abaixo. Um APK de depuração também é fornecido por conveniência.
iOS
Tinode para iOS, também conhecido como Tinodios, é estável e funcional (fonte). Veja as imagens abaixo.
Demonstração/Sandbox
Um serviço de demonstração em sandbox está disponível em https://sandbox.tinode.co/.
Faça login como alice
, bob
, carol
, dave
, frank
. A senha é <login>123
, por exemplo, o login para alice
é alice123
. Você pode descobrir outros usuários por email ou telefone prefixando-os com email:
ou tel:
respectivamente. Os e-mails são <login>@example.com
, por exemplo, [email protected]
, os telefones são +17025550001
até +17025550009
.
Quando você registra uma nova conta, é solicitado um endereço de e-mail para o qual enviar o código de validação. Para fins de demonstração, você pode usar 123456
como código de validação universal. O código que você recebe no e-mail também é válido.
Notas da caixa de areia
- O servidor sandbox é redefinido (todos os dados apagados) todas as noites às 3h15, horário do Pacífico. Uma mensagem de erro
User not found or offline
significa que o servidor foi redefinido enquanto você estava conectado. Se você vê-lo na web, recarregue e faça login novamente. No Android, saia e faça login novamente. Se o banco de dados foi alterado, exclua o aplicativo e reinstale. - O usuário do Sandbox,
Tino
é um chatbot básico que responde com uma citação aleatória a qualquer mensagem. - Como geralmente aceito, quando você registra uma nova conta, é solicitado um endereço de e-mail. O servidor enviará um e-mail com um código de verificação para esse endereço e você poderá usá-lo para validar a conta. Para facilitar o teste, o servidor também aceitará
123456
como código de verificação. Remova a linha "debug_response": "123456"
de tinode.conf
para desabilitar esta opção. - O servidor sandbox está configurado para usar a implementação ACME TLS com requisitos codificados para SNI. Se você não conseguir se conectar, o motivo mais provável é a falta de suporte do seu cliente TLS para SNI. Use um cliente diferente.
- O aplicativo da web padrão carrega um único pacote javascript minificado e CSS minificado. A versão não minificada também está disponível em https://sandbox.tinode.co/index-dev.html
- Imagens Docker com a mesma demonstração estão disponíveis.
- Você está convidado a testar seu software cliente na sandbox, hackeá-lo, etc. Porém, sem DDoS, por favor.
Características
Suportado
- Múltiplas plataformas nativas:
- Android (Java)
- iOS (Rápido)
- Web (React.js)
- Linha de comando programável (Python)
- Recursos do usuário:
- Mensagens individuais e em grupo.
- Chamadas de vídeo e voz. Mensagens de voz.
- Canais com número ilimitado de assinantes somente leitura.
- Todos os bate-papos são sincronizados em todos os dispositivos.
- Controle de acesso granular com permissões para diversas ações.
- Pesquisa/descoberta de usuário.
- Formatação avançada de mensagens no estilo markdown: *style* → style , com imagens, vídeos e anexos de arquivos embutidos.
- Formulários e modelos de respostas adequados para chatbots.
- Marcadores de conta verificada/de equipe/não confiável.
- Notificações de status de mensagens: entrega de mensagens ao servidor; notificações recebidas e lidas; digitando notificações.
- Visualização da mensagem mais recente na lista de contatos.
- Notificações de presença geradas pelo servidor para pessoas, bate-papos em grupo.
- Encaminhar e responder mensagens.
- Editando mensagens enviadas.
- Administração:
- Controle de acesso granular com permissões para diversas ações.
- Suporte para back-ends de autenticação personalizados.
- Capacidade de bloquear comunicações indesejadas do lado do servidor.
- Usuários anônimos (importantes para casos de uso relacionados ao suporte técnico por chat).
- Plugins para estender a funcionalidade, por exemplo, para oferecer suporte à moderação ou chatbots.
- Ferramenta de linha de comando programável para administração de servidores.
- Desempenho, confiabilidade e desenvolvimento:
- Clustering fragmentado com failover.
- Armazenamento e transferência fora de banda de objetos grandes, como imagens ou arquivos de documentos, usando sistema de arquivos local ou Amazon S3 (outros sistemas de armazenamento podem ser suportados com manipuladores de mídia).
- Protocolos JSON ou protobuf versão 3 wire.
- Vinculações para várias linguagens de programação:
- Javascript sem dependências externas.
- Java com dependências de Jackson e Java-Websocket. Adequado para Android, mas sem dependências do Android SDK.
- Swift sem dependências externas.
- C/C++, C#, Go, Python, PHP, Ruby e muitas outras linguagens usando gRPC.
- Escolha de um back-end de banco de dados. Outros bancos de dados podem ser adicionados escrevendo adaptadores.
- MySQL
- PostgreSQL
- MongoDB
- RepensarDB
Planejado
- Federação.
- Compartilhamento de localização e contatos.
- Pré-visualizações de documentos anexados, links.
- Gravação de mensagens de vídeo.
- Transmissão de vídeo/áudio.
- Chamadas de vídeo/áudio em grupo.
- Anexar música/áudio que não seja mensagens de voz.
- Melhor suporte a emojis.
- Diferentes níveis de persistência de mensagens (desde persistência estrita até "armazenar até ser entregue" até mensagens puramente efêmeras).
- Criptografia de mensagens em repouso.
- Criptografia ponta a ponta com OTR para mensagens individuais e método indeciso para mensagens em grupo.
- Pesquisa de texto completo em mensagens.
Traduções
Todo software cliente possui suporte para internacionalização. As seguintes traduções são fornecidas:
Linguagem | Servidor | Aplicativo da Web | Android | iOS |
---|
Inglês | ✓ | ✓ | ✓ | ✓ |
Chinês simplificado | ✓ | ✓ | ✓ | ✓ |
Chinês tradicional | | ✓ | ✓ | ✓ |
Francês | ✓ | ✓ | ✓ | |
Alemão | | ✓ | ✓ | |
hindi | | | ✓ | |
coreano | | ✓ | ✓ | |
Português | ✓ | | ✓ | |
romeno | | ✓ | ✓ | |
russo | ✓ | ✓ | ✓ | ✓ |
Espanhol | ✓ | ✓ | ✓ | ✓ |
Tailandês | | ✓ | | |
ucraniano | ✓ | ✓ | ✓ | ✓ |
vietnamita | ✓ | | | |
Mais traduções são bem-vindas. Além dos idiomas listados acima, estou particularmente interessado em árabe, bengali, indonésio, urdu, japonês, turco, persa.
Terceiro
Projetos
- Adaptador Arango DB
- Adaptador DynamoDB (desatualizado)
Licenças
- Avatares de demonstração e alguns outros gráficos são de https://www.pexels.com/ sob licença CC0 e https://pixabay.com/ sob sua licença.
- Os padrões de plano de fundo da Web e do Android são de http://subtlepatterns.com/ sob licença CC BY-SA 3.0.
- Os ícones do Android são de https://material.io/tools/icons/ sob licença Apache 2.0.
Capturas de tela
Android
iOS
Web para desktop
Web móvel
Sequências de SEO
Palavras 'bate-papo' e 'mensagens instantâneas' em chinês, russo, persa e alguns outros idiomas.
- 聊天室 即時通訊
- чат мессенджер
- インスタントメッセージ
- 인스턴트 메신저
- پیام رسان فوری
- تراسل فوري
- فوری پیغام رسانی
- Nhắn tin tức thời
- anlık mesajlaşma sohbet
- mensageiro instantâneo
- pesan instantâneo
- mensagem instantânea
- চ্যাট ইন্সট্যান্ট মেসেজিং
- O que é isso?
- তাৎক্ষণিক বার্তা আদান প্রদান