1.0.0 • Published 3 years ago

orchy-api-gateway-websocket-code7 v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

API Gateway Websocket

Este pacote que simplifica a utilização do recurso de API Gateway Websocket. Contendo as principais ações que são feitas em websocket. Além disso, é possível utilizar estes métodos fora do Websocket, em outras lambdas, como enviar mensagem de outras Lambdas que estejam fora dos métodos do seu ApiGateway (Sua lambda deverá possuir permissão para fazer tais operações).

Instalação

Antes de instalar algumas configurações são necessárias.

Set up the environment variable

Crie um arquivo para armazenar as variáveis ambientes .env e insir os atributos abaixo:

NODE_ENV=development OU staging OU production

AWS_CURRENT_REGION=REGIAO_EM_QUE_ACESSA_AS_CONFIGURACOES Ex. sa-east-1
AWS_ACCESS_KEY=CHAVE_DE_ACESSO_DO_SEU_USER_NA_AMAZON 
AWS_SECRET_KEY=SENHA_DE_ACESSO_DO_SEU_USER_NA_AMAZON
AWS_API_VERSION=VERSAO_DA_API_NA_AMAZON Ex. 2012-11-05
APPLICATION_TABLE=NOME_DA_TABELA_DYNAMODB
DOMAIN_NAME=NOME_DO_DOMINIO_DO_API_WEBSOCKET_HOST Ex. xxxxxxxxxx.execute-api.sa-east-1.amazonaws.com
STAGE=ESTAGIO_DA_APLICACAO Ex.dev, prod, homolog

Pronto, agora você já pode instalar este pacote pelo npm e importá-lo no seu projeto.

    $ npm install --save orchy-api-gateway-ws-code7

Uso

Para usar adequadamente o pacote de nós, basta instanciar um novo objeto.

    const ApiGatewayWs = require('orchy-api-gateway-ws-code7');
    const manager = new ApiGatewayWs.defaut();

Métodos disponíveis e seus parâmetros.

sendMessage() Envia mensagem para todos que estão conectados no socket. Pode ser usado não só pela lambda do sendMessage mas por qualquer outra lambda que tenha permissão.

await manager.sendMessage({
  action: 'sendMessage';
  name: String;
  channelId: String;
  content: JSON;
  
});

sendDefaultMessage() Envia uma mensagem para uma conexao em especifico. É usado pela lambda default e retorna uma mensagem de erro para o usuário que a enviou quando sua mensagem enviada pelo socket não tem um action válido.

 await manager.sendDefaultMessage(
   connectionId: String,
   {
    action: String;
    name: String;
    channelId: String;
    content: JSON;
  });

fetchConnectionSubscriptions() obtem os dados do dynamodb que possuem o seguinte connectionId.

const connectionSubscriptions = await manager.fetchConnectionSubscriptions(
  connectionId: String
);

fetchChannelSubscriptions() obtem todas as conexoes que estão inscritas no canal channelName. Atualmente só trabalhamos com o canal de nome General.

const channelSubscriptions = await manager.fetchChannelSubscriptions(
  channelName: String
);

subscribeChannel() cria uma nova conexão como o id da conexão de um usuario no dynamodb. Metodo usado pela lambda connect.

const response = await manager.subscribeChannel(
  event:IEvent // event tem um modelo de uma chamada de um lambda.
);

subscribeChannel() remove a conexão como do usuário do dynamodb. Metodo usado pela lambda disconnect.

const response = await manager.unsubscribeChannelFun(
  event:IEvent // event tem um modelo de uma chamada de um lambda.
);