Couchbase Mobile

Webhooks do gateway de sincronização

Acabamos de lançar o Couchbase Mobile 1.1 e, com essa nova versão, há muitos novos recursos. Nesta postagem do blog, daremos uma olhada nos webhooks do Sync Gateway e pensaremos em alguns exemplos concretos para usá-los.

Webhooks

Antes da versão 1.1, a única maneira de adicionar lógica personalizada na forma de plug-ins ao Sync Gateway era ouvir o feed de alterações. Embora essa abordagem ainda funcione, ela não é a mais fácil de configurar. Com os webhooks, você pode simplesmente fornecer uma função de filtro e o URL para publicar o evento. Em seguida, você trata o evento com a função linguagem de back-end de sua escolha (NodeJS, Java, Go, Ruby...).

Os webhooks podem ser usados para muitos casos de uso diferentes:

  • MensagensNotificações direcionadas para informar os usuários sobre eventos importantes.
  • Programação: inicia grandes tarefas que podem estar sendo executadas em um web worker.
  • Lógica personalizadaSync Function: amplie os recursos da Sync Function usando um webhook para executar tarefas adicionais no documento.

Na seção a seguir, você se concentrará na criação do recurso de notificação por push de um aplicativo de notícias para informar os usuários quando novos artigos que correspondem aos tópicos de interesse deles forem publicados. Este tutorial foi extraído da seção Couchbase por exemplo repositório.

Considerações sobre a arquitetura

A notificação por push é uma indicação visual para que o usuário saiba que há um novo conteúdo disponível, mas também pode ser para que o próprio aplicativo extraia os novos artigos do servidor:

O motivo pelo qual estamos usando a Web Push API em vez de uma replicação pull contínua com o Sync Gateway para verificar se há novos artigos é que ela pode funcionar mesmo quando o navegador está fechado. Em comparação com um soquete da Web ou polling longo, que só será mantido ativo enquanto o navegador e a página da Web forem mantidos abertos.

Cenários

Há diferentes cenários para o envio de uma notificação por push:

  • Mensagens de grupoEsse conceito foi introduzido no GCM para enviar notificações a até 20 dispositivos simultaneamente. Ele é muito adequado para enviar notificações a todos os dispositivos que pertencem a um único usuário.
  • Para cima e para baixoPor exemplo, um usuário atualizou um documento e outros usuários devem ser notificados sobre isso por meio de uma notificação por push.

Modelo de dados

Vamos começar com o menor documento, um documento de perfil que contém tokens de registro dos dispositivos e tópicos de interesse do usuário:

E o documento Artigo pode ter as seguintes propriedades:

Mensagens de grupo

Imagine um cenário em que um usuário esteja inscrito em uma conta freemium e insira um código de convite para acessar o plano premium por um tempo limitado. Seria bom enviar uma notificação a todos os dispositivos do usuário para buscar o conteúdo adicional.

Breve: Envie uma notificação única para usuários freemium que também tenham um código de convite para desbloquear outros dispositivos.

Faça o download do 1.1 versão do Sync Gateway. Você encontrará o binário do Sync Gateway no diretório caixa e exemplos de arquivos de configuração na pasta exemplos pasta. Copie o exampleconfig.json na raiz do seu projeto:

Adicione três usuários no arquivo de configuração:

Adicione um web hook com as seguintes propriedades no db objeto:

Inicie o Sync Gateway:

Criar um novo arquivo main.go para lidar com o webhook:

Inicie o servidor Go:

Usando o curl, faça uma solicitação POST para :4984/db/bulk_doc para salvar 3 documentos de perfil simultaneamente:

OBSERVAÇÃO: Para economizar espaço na linha de comando, a opção -dados especifica que o corpo da solicitação está em profiles.json.

Observe que somente o documento do perfil de Ali é enviado para o ponto de extremidade do webhook:

Na próxima seção, você configurará um segundo web hook para notificar todos os usuários quando um novo artigo que corresponda ao interesse deles for publicado.

Para cima e para baixo

Adicione outra entrada de webhook que filtre apenas documentos do tipo artigo:

Adicione outro manipulador em seu servidor Go:

Verifique se o webhook está funcionando como esperado adicionando um documento de artigo:

OBSERVAÇÃO: O conteúdo de articles.json pode ser encontrado aqui.

Nesse caso, é preciso trabalhar um pouco mais para descobrir qual conjunto de usuários deve ser notificado. Esse é um bom caso de uso para usar uma visualização para indexar os documentos de perfil e emitir o tópico como a chave e as IDs de registro como o valor para cada tópico na matriz de tópicos.

Para registrar uma exibição, podemos usar o PUT do Sync Gateway /_design/ddocname com a definição da visualização no corpo da solicitação:

OBSERVAÇÃO: O conteúdo de view.json pode ser encontrado aqui.

Observe que o artigo que postamos acima tem design em seu tópico e o único usuário inscrito nesse tópico é o Adam. Consequentemente, se você consultar essa visualização com a chave "design", apenas um par (chave, valor) deverá retornar com o tópico como chave e os tokens de dispositivo como valor:

Agora, você pode editar o manipulador em main.go para consultar posteriormente o tópicos_do_usuário com a chave sendo o tópico do artigo:

Executar o bulk_doc novamente e você verá a lista de tokens de dispositivo a serem usados nos registros:

Conclusão

Neste tutorial, você aprendeu a usar Web Hooks no cenário de notificações por push do GCM e usou as visualizações do Couchbase Server para acessar informações adicionais no Webhook Time™ :).

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

Autor

Postado por James Nocentini, redator técnico, celular, Couchbase

James Nocentini é o redator técnico responsável pela documentação do Couchbase Mobile. Anteriormente, ele trabalhou como Developer Advocate e, antes disso, como desenvolvedor front-end da HouseTrip. Ele também gosta de escrever tutoriais sobre Android para raywenderlich.com em seu tempo livre.

5 Comentários

  1. Sebastian Benzian Olsson julho 9, 2015 em 4:55 pm

    Bom tutorial. Talvez seja hora de atualizar nosso código GCM/APNS

  2. Hi,

    Obrigado pela boa documentação.

    Existe alguma maneira de obter o anexo por meio de webhook ou implementação de plug-in, já que estamos procurando criar um histórico de revisão do anexo?

    Obrigado,
    Satinder

  3. Olá, obrigado pelo tutorial. Gostaria de saber como lidar com as exclusões. Já que o syncgateway fornece apenas os atributos id, rev e deleted.
    Tenho vários tipos de documentos em um único bucket e estou interessado em sincronizar (ou seja, incluir exclusões) apenas um tipo específico.

    1. Parece que isso deve ser feito na função de sincronização http://developer.couchbase.com.... Sinta-se à vontade para fazer perguntas nos fóruns para entrar em seu caso de uso com um pouco mais de detalhes https://forums.couchbase.com/c

  4. [...] Webhooks, um novo mecanismo de integração, fornece notificações de alteração para que você possa integrar facilmente o Couchbase Mobile com aplicativos de linha de negócios, serviços de terceiros, etc. Você pode ler mais no blog do Dev Advocate James Nocentini [...]

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.