AliceClass/_includes/player.html

187 lines
6.1 KiB
HTML

<table id="temporary-table" style="display: none;">
<tr>
<td>{{ include.user }}</td>
</tr>
</table>
<div class="live-container">
<div class="player-container">
<video
class="player"
data-dashjs-player
{% if page.user %}
url="https://cast.alice.ufsj.edu.br/dash/{{page.user}}.mpd"
{% endif %}
autoplay
controls
muted
></video>
<div class="player-off">
<h1>Offlinee</h1>
</div>
</div>
<div class="chat">
<div class="chat-container">
<div class="chat-info">
<div>
<h1>Live chat</h1>
</div>
<div class="chat-views">
<i class="fa-solid fa-users"></i>
<!-- <h4>679 pessoas online</h4> -->
</div>
</div>
<div class="chat-lines">
<div class="chat-line">
<!-- <p><span class="username">{msg.nome}:</span> {msg.mensagem}</p> -->
</div>
</div>
<div class="chat-input">
<form on:submit|preventDefault={sendMessage} class="chat-input-form">
<input class="input chat-enter" placeholder="Converse com o chat aqui" bind:value={message} />
<input type="submit" hidden />
</form>
</div>
</div>
</div>
</div>
<script src="/assets/js/dash.all.min.js"></script>
<script>
// Obter a string de query da URL
const queryString = window.location.search;
// Criar um objeto URLSearchParams com a string de query
const urlParams = new URLSearchParams(queryString);
{% if page.user %}
const user = "{{page.user}}";
{% else %}
const user = urlParams.get('user');
{% endif %}
// Exemplo de como usar o valor
console.log(user); // Isso vai exibir o valor do parâmetro 'user'
const videoElement = document.querySelector('video');
const playerOffElement = document.querySelector('.player-off');
const url = `https://cast.alice.ufsj.edu.br/dash/${user}.mpd`;
videoElement.src = url;
fetch(url)
.then(response => {
if (response.ok) {
console.log("Arquivo existe.");
playerOffElement.style.display = "none";
} else {
console.log("Arquivo não encontrado.");
// Coloque o código para ocultar o vídeo aqui
videoElement.style.opacity = "0";
}
})
// URL do servidor WebSocket
const socket = new WebSocket('wss://cast.alice.ufsj.edu.br/chat/chat');
socket.addEventListener('open', () => {
console.log('Conexão WebSocket aberta com sucesso!');
});
// Adiciona um manipulador de eventos para lidar com a recepção de mensagens
socket.addEventListener('message', (event) => {
console.log('Mensagem recebida do servidor:', event.data);
});
// Adiciona um manipulador de eventos para lidar com o fechamento da conexão
socket.addEventListener('close', (event) => {
console.log('Conexão WebSocket fechada:', event.reason || 'Sem motivo específico');
});
// Adiciona um manipulador de eventos para lidar com erros
socket.addEventListener('error', (event) => {
console.error('Erro no WebSocket:', event);
});
const nomesAlice = [
'Alice', 'Chapeleiro Maluco', 'Coelho Branco', 'Rainha de Copas',
'Gato de Cheshire', 'Lebre de Março', 'Lagarta', 'Dodo',
'Tweedledee', 'Tweedledum', 'Rainha Vermelha', 'Rei de Copas',
'JotaChina', 'JotaJapão', 'JotaÍndia', 'JotaCoreia', 'JotaTailândia',
'JotaVietnã', 'JotaMalásia', 'JotaIndonésia', 'JotaFilipinas',
'JotaSingapura', 'JotaNepal', 'JotaCamboja', 'JotaMianmar',
'JotaLaos', 'JotaBangladesh', 'JotaSriLanka'
];
function nomeAleatorio() {
return nomesAlice[Math.floor(Math.random() * nomesAlice.length)];
}
// Variáveis para armazenar o nome do usuário e a mensagem
let username = nomeAleatorio();
let message = '';
// Função que envia a mensagem
function sendMessage(event) {
event.preventDefault(); // Previne o comportamento padrão do formulário
// Cria um objeto com os dados da mensagem
const msgData = {
nome: username,
mensagem: message
};
// Envia a mensagem como uma string JSON
socket.send(JSON.stringify(msgData));
// Limpa o campo de entrada de mensagem
document.querySelector('.chat-enter').value = '';
}
// Função que adiciona uma nova linha de mensagem ao chat
function addMessage(msg) {
console.log(msg);
const chatLines = document.querySelector('.chat-lines');
// Cria o elemento da mensagem
const newMessage = document.createElement('div');
newMessage.classList.add('chat-line');
newMessage.innerHTML = `<p><span class="username">${msg.nome}:</span> ${msg.mensagem}</p>`;
// Adiciona a nova mensagem no final da lista de mensagens
chatLines.appendChild(newMessage);
// Rola o chat para baixo para mostrar a nova mensagem
chatLines.scrollTop = chatLines.scrollHeight;
}
// Event listener para quando o WebSocket abrir a conexão
socket.addEventListener('open', () => {
console.log('Conectado ao servidor WebSocket');
});
// Event listener para quando uma mensagem é recebida do servidor
socket.addEventListener('message', event => {
// Parseia a mensagem recebida como JSON
const msg = JSON.parse(event.data);
// Adiciona a mensagem ao chat
addMessage(msg);
});
// Event listener para o envio de mensagem no formulário
document.querySelector('.chat-input-form').addEventListener('submit', event => {
// Captura o valor do input
message = document.querySelector('.chat-enter').value;
// Chama a função que envia a mensagem
sendMessage(event);
});
</script>