Conectar um cliente a uma sessão
Quando o frontend precisa entrar em uma sessão ao vivo, receber mensagens do actor e enviar mensagens para o actor, conecte um cliente a uma sessão de actor. Para conectar um cliente a uma sessão:- Chame
base44.actors.ActorName(sessionId)para selecionar a sessão. - Chame
.connect()para abrir a conexão WebSocket. - Chame
conn.subscribe()para registrar um listener para as mensagens do actor. - Chame
conn.send()para enviar uma mensagem para o actor.
chatRoom, escuta mensagens e envia uma mensagem:
Executar ticks
Quando um trabalho precisa se repetir em um intervalo enquanto há clientes na sessão, execute ticks. Exemplos incluem transmitir o estado do jogo ou atualizar um timer de rodada. Para executar ticks:- Defina
tickIntervalMscom a duração do intervalo em milissegundos. - Implemente
shouldTick()para retornartruepara continuar os ticks efalsepara pará-los. - Em
handleTick(), execute o trabalho de cada intervalo.
Agendar wakes
Quando um trabalho precisa ser executado uma vez em um horário específico, esteja a sessão ativa ou inativa, agende um wake. Exemplos incluem encerrar uma vez após 30 segundos ou fechar um lobby vazio. Para agendar um wake:- Chame
schedule()com uma chave e um horário para agendar o wake. - Em
handleWake(), verifique a chave e execute o trabalho desse wake. - Quando o wake não for mais necessário, chame
cancelSchedule()com a chave.
Gerenciar conexões de clientes
Quando você precisa decidir quem pode entrar em uma sessão, responder a um cliente específico e alcançar todos os clientes da sessão, gerencie as conexões de clientes. Para gerenciar conexões de clientes:- Em
handleConnect(), verifiqueconn.identitye chameconn.reject()para recusar um cliente. - Chame
conn.send()para responder apenas a esse cliente. - Em
handleMessage(), chamebroadcast()para alcançar todos os clientes conectados. Para identificar o remetente, inclua campos deconnna mensagem.
Persistir dados da sessão
Quando os valores precisam sobreviver a um período de inatividade, persista os dados da sessão. Exemplos incluem um tabuleiro, uma lista de histórico ou a vez atual. Para persistir dados da sessão:- Em
handleStart(), carregue os valores dethis.storagepara os campos da classe. - Após cada mudança, chame
this.storage.put()para salvar o valor atualizado. - Para redefinir a sessão, chame
this.storage.delete()outhis.storage.deleteAll().
Gravar dados de entidades a partir de uma sessão
Quando a sessão precisa criar ou atualizar registros do app, grave dados de entidades. Exemplos incluem uma pontuação final ou um pedido concluído. Para gravar dados de entidades a partir de uma sessão:- Valide a mensagem recebida antes de gravar.
- Leia o ID do usuário em
conn.identity.userId. - Use
this.client.asServiceRolepara acesso elevado. Grave com uma chave estável, como o ID da sessão, para que um handler repetido atualize o mesmo registro.
Chamar uma função de backend para trabalhos com secrets
Os actors podem ler secrets do app comsecrets.get(). Quando um handler precisa de um trabalho que usa um secret, como chamar uma API externa com uma chave de API, recomendamos chamar uma função de backend. A função lê o secret e retorna o resultado, nunca o secret.
Para chamar uma função de backend a partir de um actor:
- Crie uma função de backend que leia o secret com
secrets.get(), faça o trabalho e retorne o resultado. - Em um handler, chame
this.client.functions.invoke()com o nome da função e os dados a serem enviados. - Use o resultado na sua sessão, por exemplo transmitindo-o para os clientes conectados.
Veja também
- Visão geral de actors: Conceitos e terminologia
- Criar um actor: Arquivos do actor e uma classe mínima
- Arquivos e código de actors: API completa da classe de backend
actors deploy: Implante actors locais
Esta página foi traduzida usando IA. Para as informações mais precisas e atualizadas, consulte a versão em inglês.