gomoku/public/scripts/display-ws-connection.js

41 lines
1.4 KiB
JavaScript

// Get gameId and playerId from meta tags generated by the server
const gameIdMeta = document.querySelector('meta[name="gameId"]');
const playerIdMeta = document.querySelector('meta[name="playerId"]');
if (!gameIdMeta || !playerIdMeta) {
console.error('Game ID or Player ID meta tags not found.');
}
const gameId = gameIdMeta.content;
const playerId = playerIdMeta.content;
// Dynamically construct WebSocket URL
const wsUrl = `ws://${window.location.host}/ws?gameId=${gameId}&playerId=${playerId}`;
// Get the game container element
const gameContainer = document.getElementById('game-container');
// Set the ws-connect attribute
gameContainer.setAttribute('ws-connect', wsUrl);
// Tell HTMX to connect the WebSocket
htmx.trigger(gameContainer, ' and connect');
// Update the WebSocket status indicator
const wsStatusDiv = document.getElementById('ws-status');
gameContainer.addEventListener('htmx:wsConnecting', function () {
if (wsStatusDiv) wsStatusDiv.textContent = 'Connecting...';
});
gameContainer.addEventListener('htmx:wsOpen', function () {
if (wsStatusDiv) wsStatusDiv.textContent = 'Connected';
});
gameContainer.addEventListener('htmx:wsClose', function () {
if (wsStatusDiv) wsStatusDiv.textContent = 'Disconnected';
});
gameContainer.addEventListener('htmx:wsError', function () {
if (wsStatusDiv) wsStatusDiv.textContent = 'Connection Error';
});