Módulo de Eventos RTM
O Módulo de Eventos RTM fornece funcionalidade para assinar e lidar com eventos em tempo real no SDK da Web do Gamanza Engage. Ele permite que os desenvolvedores assinem vários eventos, cancelem a assinatura de eventos e emitam dados para a conexão WebSocket.
Acessando o Módulo
O Módulo de Eventos RTM pode ser acessado por meio da instância do SDK do Gamanza Engage:
const Events = sdk.Events;
Métodos Públicos
assinar
Assina para receber eventos em tempo real com base na API de comunicação em tempo real fornecida pelo Gamanza Engage.
Assinatura:
assinar(evento, callback, opções)
Definições de Tipo:
function assinar<T extends keyof EventTypeMap>(
evento: T,
callback: SDKEventListener<T>,
opções?: SubscriptionOptions
): string;
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
evento | keyof EventTypeMap | O nome do evento para o qual assinar |
callback | SDKEventListener<T> | A função de retorno de chamada que será chamada quando o evento for disparado |
opções | SubscriptionOptions (opcional) | Opções adicionais para a assinatura |
Retorna:
| Tipo | Descrição |
|---|---|
Tipo string | Um ID de assinatura exclusivo que pode ser usado para cancelar a assinatura do evento |
Exemplo:
// Assinar a eventos de aumento de XP
const idAssinatura = rtmEvents.assinar('ranks:on:xpUp', (data, eventoRaw) => {
console.log('O XP do jogador aumentou:', data.xpBalance);
console.log('Evento bruto:', eventoRaw);
});
// Assinar com opções
const idAssinaturaComOpcoes = rtmEvents.assinar('ranks:on:levelUp',
(data, eventoRaw) => {
console.log('O jogador subiu para o nível:', data.level.levelNumber);
},
{
once: true, // Disparar apenas uma vez
timeout: 60000, // Expirar após 60 segundos
filter: (data) => data.level.levelNumber > 5 // Disparar apenas para níveis acima de 5
}
);
cancelar assinatura
Remove uma única assinatura por seu identificador.
Assinatura:
cancelar assinatura(idAssinatura)
Definições de Tipo:
function cancelar assinatura(idAssinatura: string): boolean;
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
idAssinatura | Tipo string | O ID de assinatura exclusivo retornado pelo método assinar |
Retorna:
| Tipo | Descrição |
|---|---|
boolean | true se a assinatura foi removida com sucesso, false caso contrário |
Exemplo:
// Cancelar a assinatura de um evento
const subscriptionId = rtmEvents.subscribe('ranks:on:xpUp', callback);
const unsubscribed = rtmEvents.unsubscribe(subscriptionId);
if (unsubscribed) {
console.log('Assinatura cancelada com sucesso');
} else {
console.log('Falha ao cancelar a assinatura ou assinatura não encontrada');
}
unsubscribeFromEvent
Remove todas as assinaturas ativas de um evento específico.
Assinatura:
unsubscribeFromEvent(event)
Definições de Tipo:
function unsubscribeFromEvent<T extends keyof EventTypeMap>(event: T): number;
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
event | keyof EventTypeMap | O nome do evento para o qual a assinatura será cancelada |
Retorna:
| Tipo | Descrição |
|---|---|
number | O número de assinaturas removidas |
Exemplo:
// Cancelar todas as assinaturas de eventos de aumento de XP
const removedCount = rtmEvents.unsubscribeFromEvent('ranks:on:xpUp');
console.log(`Removidas ${removedCount} assinaturas`);
getEventsStats
Retorna estatísticas sobre as assinaturas de eventos atuais.
Assinatura:
getEventsStats()
Definições de Tipo:
function getEventsStats(): Record<string, any>;
Parâmetros:
Nenhum
Retorna:
| Tipo | Descrição |
|---|---|
Record<string, any> | Um objeto contendo estatísticas sobre as assinaturas de eventos atuais |
Exemplo:
// Obter estatísticas de assinaturas
const stats = rtmEvents.getEventsStats();
console.log('Assinaturas atuais:', stats);
emitToWebSocket
Envia dados usando o Serviço de Mensagens Gamanza Engage (WebSockets).
Assinatura:
emitToWebSocket(event, data)
Definições de Tipo:
function emitToWebSocket<T extends keyof EmitterTypeMap>(event: T, data: EmitterTypeMap[T]): void;
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
eventos | keyof EmitterTypeMap | O nome do evento a ser emitido |
data | EmitterTypeMap[T] | Os dados a serem enviados com o evento |
Retorna:
| Tipo | Descrição |
|---|---|
void | Este método não retorna um valor |
Exemplo:
// Enviar uma mensagem de confirmação
rtmEvents.emitToWebSocket('send:ack', { messageId: 'message-123' });
// Enviar um evento de rastreamento de análises
rtmEvents.emitToWebSocket('send:analytics:event', {
eventName: 'button_click',
properties: {
buttonId: 'login-button',
timestamp: Date.now()
}
});
Eventos
O Módulo de Eventos RTM fornece acesso a vários eventos em tempo real que podem ser assinados. Esses eventos são categorizados em diferentes grupos com base em sua funcionalidade.
Constantes de Evento
Para melhor manutenção e evitar erros de digitação, é recomendável usar a constante exportada EVENTS. Estas constantes são organizadas por namespace, correspondendo às categorias nas tabelas abaixo.
Exemplo de UI:
import { EVENTS } from '@gamanza/engage-web-client-sdk';
// Assinar usando a constante
sdk.Events.subscribe(EVENTS.RANKS.ON_XP_UP, (data) => {
console.log('XP Atualizado:', data.xpBalance);
});
// Ou usando a constante de namespace para eventos do jogador
sdk.Events.subscribe(EVENTS.PLAYER.ON_GAMIFICATION_OPT_IN, (data) => {
console.log('Jogador optou');
});
Selecionar Eventos
| Constante | Nome do Evento | Descrição | Tipo | Tipo de Garantia | Propriedades |
|---|---|---|---|---|---|
SYSTEM.ON_ERROR | on:error | Eventos de erro do sistema | Direto | FIRE_FORGET | propriedades de erro adicionais |
Estrutura do Evento de Acionamento
interface ErrorEventData extends BaseEventData {
[key: string]: unknown; // Propriedades de erro adicionais
}
Eventos do Jogador
| Constante | Nome do Evento | Descrição | Tipo | Tipo de Garantia | Propriedades |
|---|---|---|---|---|---|
RANKS.ON_XP_UP | ranks:on:xpUp | Eventos de aumento de XP | Direto | FIRE_FORGET | playerId: string, level: Level, nextLevel?: Level, nextRank?: Rank, pointsUntilNextLevel: number, pointsUntilNextRank: number, rank: Rank, xpBalance: number, rewardsGroupId: string |
RANKS.ON_LEVEL_UP | ranks:on:levelUp | Eventos de aumento de nível | Direto | FIRE_FORGET | playerId: string, level: Level, nextLevel?: Level, nextRank?: Rank, pointsUntilNextLevel: number, pointsUntilNextRank: number, rank: Rank, xpBalance: number, claimReward: true, rewards: LoyaltyRewards[], rewardsGroupId: string |
RANKS.ON_RANK_UP | ranks:on:rankUp | Eventos de aumento de posto | Direto | FIRE_FORGET | playerId: string, level: Level, nextLevel?: Level, nextRank?: Rank, pointsUntilNextLevel: number, pointsUntilNextRank: number, rank: Rank, xpBalance: number, claimReward: boolean, rewards: Reward[], rewardsGroupId: string |
RANKS.ON_MAX_CAP_REACHED | capsMultipliers:on:capReached | Eventos de alcance do limite máximo | Direto | FIRE_FORGET | playerId: string, type: string, limit: number, period: string, reached: boolean |
RANKS.ON_LEVEL_BOOSTER_ACTIVATED | ranks:on:levelBoosterActivated | Eventos de ativação de impulsionador de nível | Direto | FIRE_FORGET | _id: string, playerId: string, rewardId: string, boosterRate: number, timeStart: string, timeEnd: string, status: string, type: string, boosterType?: RewardTypeEnum, countDown?: ActiveCountdownBoosterType, metadata?: ActiveMetadataBoosterType, isNew?: boolean, isRecentBooster?: boolean, createAt?: string |
RANKS.ON_LEVEL_BOOSTER_END | ranks:on:levelBoosterEnd | Eventos de término de impulsionador de nível | Direto | FIRE_FORGET | _id: string, playerId: string, rewardId: string, boosterRate: number, timeStart: string, timeEnd: string, status: string, type: string, boosterType?: RewardTypeEnum, countDown?: ActiveCountdownBoosterType, metadata?: ActiveMetadataBoosterType, isNew?: boolean, isRecentBooster?: boolean, createAt?: string |
PLAYER.ON_GAMIFICATION_OPT_IN | ranks:on:optIn | Eventos de ativação da gamificação | Direto | FIRE_FORGET | playerId: string, status: string |
PLAYER.ON_GAMIFICATION_OPT_OUT | ranks:on:optOut | Eventos de cancelamento da Gamificação | Direto | FIRE_FORGET | playerId: string, status: string |
Estrutura de Dados do Evento de Aumento de XP
interface XpUpEventData extends BaseEventData {
playerId: string;
level: {
_id: string;
levelNumber: number;
};
nextLevel?: {
_id: string;
levelNumber: number;
};
nextRank?: {
_id: string;
name: string;
imageUrl: string;
translations: {
language: string;
name: string;
description: string;
}[];
};
pointsUntilNextLevel: number;
pointsUntilNextRank: number;
rank: {
_id: string;
name: string;
imageUrl: string;
translations: {
language: string;
name: string;
description: string;
}[];
};
xpBalance: number;
rewardsGroupId: string;
}
Estrutura de Dados do Evento de Aumento de Nível
interface LevelUpEventData extends BaseEventData {
playerId: string;
level: {
_id: string;
levelNumber: number;
};
nextLevel?: {
_id: string;
levelNumber: number;
};
nextRank?: {
_id: string;
name: string;
imageUrl: string;
translations: {
language: string;
name: string;
description: string;
}[];
};
pointsUntilNextLevel: number;
pointsUntilNextRank: number;
rank: {
_id: string;
name: string;
imageUrl: string;
translations: {
language: string;
name: string;
description: string;
}[];
};
xpBalance: number;
claimReward: true;
rewards: LoyaltyRewards[];
rewardsGroupId: string;
}
Estrutura de Dados do Evento de Aumento de Patente
interface RankUpEventData extends BaseEventData {
playerId: string;
level: {
_id: string;
levelNumber: number;
};
nextLevel?: {
_id: string;
levelNumber: number;
};
nextRank?: {
_id: string;
name: string;
imageUrl: string;
translations: {
language: string;
name: string;
description: string;
}[];
};
pointsUntilNextLevel: number;
pointsUntilNextRank: number;
rank: {
_id: string;
name: string;
imageUrl: string;
translations: {
language: string;
name: string;
description: string;
}[];
};
xpBalance: number;
claimReward: boolean;
rewards: LoyaltyRewards[];
rewardsGroupId: string;
}