Design de aplicativos

Criar um aplicativo de bate-papo para desktop usando a pilha CEAN e o Electron

Então você está interessado em criar um aplicativo de bate-papo para desktop como o Slack, mas não sabe por onde começar. O Slack foi muito aberto ao dizer que usou o aplicativo de bate-papo do Github Elétrons para criar a versão desktop de seu software. Isso significa que o Slack foi desenvolvido usando tecnologias da Web.

Veremos como criar um aplicativo de desktop de bate-papo em tempo real que não é nem de longe tão rico em recursos quanto o Slack, mas que lhe dará uma perspectiva de como você poderia expandir até esse ponto.

Os pré-requisitos

Embora não exija muito, há algumas coisas de que você precisará para ter sucesso no que vem a seguir:

  • Servidor Couchbase 4+
  • Gerenciador de pacotes do nó (NPM)

Precisamos do Couchbase Server porque todas as mensagens de bate-papo serão armazenadas em cache no banco de dados após serem enviadas. Isso permite que todos que entrarem na sala de bate-papo possam ver as mensagens anteriores. Isso é importante porque as pessoas podem estar entrando no bate-papo mais tarde do que outras e não queremos que elas percam nada. O Node Package Manager (NPM) é necessário porque o usaremos para instalar o Angular 2 e o Electron. Ele está disponível por meio da instalação do Node.js.

Com tudo isso dito, vamos começar a desenhar nosso projeto.

Clonagem do servidor Socket.io

Como você deve saber, este não é o primeiro tutorial que escrevi sobre o assunto de bate-papo em tempo real usando a pilha CEAN. Na verdade, escrevi outros dois:

Para economizar tempo, usaremos o código do lado do servidor que desenvolvemos no primeiro tutorial da pilha CEAN, e não no tutorial do Ionic 2. Se você ainda não o fez, recomendo que o leia. No entanto, você pode obter o código-fonte em fazendo o download do GitHub, ou executando o seguinte no Terminal (Mac e Linux) ou no Prompt de Comando (Windows):

Com o download do código do lado do servidor, navegue até o projeto usando o Prompt de Comando ou o Terminal e instale todas as dependências executando:

Neste ponto, seu código de servidor de bate-papo está pronto para ser usado!

Configuração do Couchbase

Como o Couchbase será usado com o aplicativo Node.js, precisamos de um bucket configurado e autorizado a usar consultas N1QL. Tudo isso foi explicado no primeiro Tutorial de bate-papo da pilha CEANMas, apenas para relembrar, vamos ver novamente.

Instale uma cópia do Couchbase Server 4 e crie um bucket chamado bate-papo na web que tenha o serviço de consulta ativado. Como usaremos as consultas N1QL, precisamos criar um índice primário. Isso pode ser feito usando o cliente Couchbase Query (CBQ). No Mac, execute o seguinte em um Terminal:

O mesmo pode ser feito no Windows usando o prompt de comando da seguinte forma:

Com o CBQ aberto, execute o seguinte para criar um índice:

O Couchbase Server está pronto para ser usado!

Criação de um projeto Electron

Nosso projeto Electron terá muito corte e cola quando se trata de código. Isso ocorre porque o Electron aceita praticamente qualquer aplicativo da Web que você lançar nele. Lembre-se de que temos um aplicativo da Web muito adequado incluído em nosso projeto de servidor Socket.io.

Crie um novo diretório, talvez em sua área de trabalho, e chame-o de bate-papo na área de trabalho ou o que você achar mais apropriado. Navegue até o projeto com seu Terminal ou Prompt de Comando e execute o seguinte:

Isso cria um NPM muito básico package.json em nosso projeto. Agora, precisamos instalar todas as dependências do nosso aplicativo de desktop. Execute o seguinte:

A primeira instalação obterá todas as nossas dependências do Angular 2. No projeto do lado do servidor, a interface do usuário voltada para o cliente foi toda criada com o Angular 2 e o TypeScript. Faremos o mesmo aqui. A segunda instalação obtém o binário do Electron.

Agora abra o package.json encontrado na raiz do projeto e troque o arquivo roteiros parte com o seguinte:

Veremos o que isso significa em breve, mas primeiro crie um main.js na raiz do projeto. Ele deve conter o seguinte código:

O texto acima pode parecer familiar por dois motivos. Primeiro, eu a tirei de um post anterior Eu escrevi sobre o Electron e, em segundo lugar, ele veio praticamente direto da documentação do Electron. Nossa linha importante, entretanto, é a seguinte:

Isso significa que todo o nosso código do Angular 2 estará no diretório público começando com o diretório index.html arquivo.

Copiar o público do diretório cean-web-chat que você clonou do GitHub e coloque-o na raiz do projeto Electron. Já existe um arquivo index.html nele, mas precisamos alterar algumas coisas. Abra-o e altere a variável script caminhos para o seguinte:

Fizemos isso porque os caminhos da nossa biblioteca não estão no mesmo lugar em que estavam no aplicativo do lado do servidor.

Há mais algumas coisas a fazer antes de estarmos prontos para vê-lo em ação. Abra o arquivo public/app/default/default.ts e crie uma nova variável na classe da seguinte forma:

Isso deve ser feito dentro da classe. Como não estamos mais no mesmo host que o servidor, precisamos informar ao nosso cliente de desktop a qual host devemos nos conectar. Dentro do construtor, defina socketHost para qualquer que seja o host:

Nossa solicitação HTTP no construtor não é mais válida porque nosso cliente não está incluído no servidor. Precisamos definir o host que acabamos de definir. Isso pode ser feito da seguinte forma:

Por fim, encontre a linha em que você define o objeto Socket.io. Ele também precisa de um host para o qual apontar. Altere-o para que se pareça com o seguinte:

A essa altura, você deve estar bem!

Vendo-o em ação

Você precisará de dois Prompts de Comando ou Terminais abertos para isso. O primeiro terminal executará o servidor Socket.io Node.js que se conecta ao Couchbase Server. Execute o seguinte, com o projeto do GitHub como seu diretório de trabalho, para fazer isso:

Se o servidor for iniciado, você está em boas condições. No segundo Terminal, execute o seguinte, com o projeto Electron como seu diretório de trabalho:

Lembre-se de que fizemos o iniciar em nosso script package.json arquivo? É assim que o usamos.

Tente enviar algumas mensagens. Elas devem ser salvas no Couchbase Server e, se você abrir outro cliente ou carregar o cliente de bate-papo incorporado do projeto do GitHub, poderá conversar.

Conclusão

Você acabou de ver como converter um aplicativo da Web existente em um aplicativo de desktop de plataforma cruzada. Esse aplicativo oferecia bate-papo em tempo real usando tecnologias de ponta como Angular 2, Couchbase, Socket.io e Node.js.

Se ainda não o fez, recomendo que dê uma olhada nos posts anteriores que fiz sobre o tópico Socket.io com o Couchbase. São boas leituras e podem abrir as portas para possibilidades para você.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.