Mais de um usuário no Chat

Bom dia pessoal!

Como faço pra ter mais de um usuário dentro de um chat?

Quando entro com duas contas, é como se tivesse cada um em uma sala. Como é um jogo de quiz competitivo, preciso que várias pessoas vejam o mesmo conteúdo e respondam a mesma pergunta.

Obs: Não reparem na parte organizacional, ainda vou arrumar. kkk

Obrigado

Considerando que um chat, ou uma conversa, é um item no banco de dados (thing) do tipo chat(data type), que contém uma lista de mensagens (field, pode ser uma lista de textos ou ainda uma lista de mensagens, sendo este outro data type), basta ter uma página para esse chat e permitir que os usuários ingressem em um chat existente, ao invés de criarem um novo.

Então @falecom1 . Ai que está. Como faço pra mudar essa opção de “Criarem um novo” e ingressar em um existente?

Você precisa apresentar para o usuário o chat existente (dar o link para ele ingressar ou retornar o chat numa busca na página em que o sujeito está).
Não sei exatamente qual é o fluxo que está pensando, mas a coisa é simples dessa forma.

A depender do seu fluxo de interação, você pode pensar em fazer algo condicional, como por exemplo:

  • Ao clicar no botão de ingressar no chat…
    – se não houver chat ativo, crie um novo chat e inclua este usuário;
    – se houver um chat ativo, adicione esse usuário ao último chat e exiba a conversa

Não sei se isso está alinhado à sua expectativa, mas a impressão que tenho é que você só precisa olhar para a coisa sob uma outra perspectiva.

Se quiser detalhar melhor o processo/fluxo que está pensando, talvez a gente consiga pensar em algo mais bem ajustado à sua necessidade.

Então @falecom1 .

Vou te explicar como funciona o site pra entender a mecânica.

Será um jogo de QUIZ, que irei doar para as escolas públicas para ajudar no ensino.

No jogo, vc cria um login , senha e um Nick ( Nome de Usuário ).

Após logado, vc verá a tela principal com o menu ( Perfil, Ranking, Equipe ) e as Salas a direita com seus respectivos nomes( Geografia, História e etc).

Quando vc clica na sala, abrirá uma sala( essa imagem que enviei anteriormente). Nela, entrarão vários usuarios simultaneamente para responder a mesma pergunta. Como a pontuação ficará ao lado do nome, penso que a sala deveria existir sempre e não ser criada( Apenas por mim, claro). Vou colocar aqui uma imagem da ideia. Esse jogo foi criado a muuuiitos anos atrás. Fez parte da minha “infância” e ajudou bastante no meu aprendizado em linguas.

Quero criar uma estruturai “idêntica” a essa. Note pela imagem, as salas a direita e o menu acima. No meio, o jogador poderia abrir várias salas e jogar. Note tbm que dentro na sala tem um menu com 4 opções( ranking, Informações da sala, enviar mensagem privada e desativar som).

Entendi o cenário.
De fato, as salas podem – e devem – ser fixas, contudo é preciso pensar numa lógica de rodadas.
Isso significa que uma sala pode ter uma rodada ativa ou não (pq ela não acumula perguntas e respostas indefinidamente, correto?

O que consigo imaginar é o seguinte:

  • Um data type salas (possui rodadas);
  • Um data type rodadas (possui um status [se ativo ou inativo], uma lista de participantes [users], uma lista de perguntas e uma de respostas, além da pontuação);
  • Um data type perguntas;
  • Um data type respostas (possui autor da resposta e texto)

Ao abrir uma sala, o bubble vai fazer uma busca pela última rodada (do a search for…) e adicionar o usuário nessa rodada.

Quando essa rodada esgotar, o bubble cria uma nova e o processo se repete.
Faz sentido?

@falecom1

Faz sentido.

"Ao abrir uma sala, o bubble vai fazer uma busca pela última rodada (do a search for…) e adicionar o usuário nessa rodada."

Era exatamente isso que acontecia. Enquanto tem gente na sala, as perguntas vão rolando. Cada pergunta tem 30 segundos pra responder, caso ngm acertasse, trocava pra outra. Se acertar em 30 segundo, ponto!

Quando não tinha ngm na sala, o programa “parava” de rodar as perguntas e voltava quando aparecia um usuário pelo menos.

Isso ai faz todo sentido. Só passar isso pro bubble que complica! haha

Acredito que você pode pensar numa lógica da seguinte maneira:

Quando o usuário abre a sala, o Bubble verifica o banco de dados:

  • se existe uma rodada ativa, carregue ela;
  • se não, cria uma nova rodada.

O usuário então é adicionado a essa rodada e a coisa funciona como você descreveu.
Ao sair (ao clicar num botão de fechar ou qualquer outro recurso para encerrar a sessão), o Bubble vai remover esse usuário da rodada e contar quantos usuários restam.

  • se o número de usuários restantes for 0, o status dessa rodada passa a ser inativo e, portanto, ao entrar um novo usuário ele vai criar uma nova rodada.

Isso seria pra que um usuário, ao entrar em uma sala já rodando, pudesse ver as interações que já aconteceram entre o sistema e os participantes - além dele poder visualizar todos os que estão participando naquela rodada, bem como o placar.

Acho que é bem possível de fazer funcionar sim (note que disse possível, não fácil… rsrsrs).

Espero ter ajudado a alinhar as ideias!

Bom dia @falecom1 .

Foi claro sim!

Muito obrigado pelo direcionamento.

Vou pesquisar como colocar isso em prática.

Muito obrigado

1 Like