Add index.html
This commit is contained in:
78
index.html
Normal file
78
index.html
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ru">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Pion WebTransport Тест</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: sans-serif; padding: 20px; text-align: center; }
|
||||||
|
#status { font-weight: bold; margin: 20px 0; }
|
||||||
|
input, button { padding: 10px; font-size: 16px; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Отправка данных по WebTransport</h1>
|
||||||
|
<p>Домен: wt.shaiheprjct.ru</p>
|
||||||
|
|
||||||
|
<div id="status">Статус: Подключение...</div>
|
||||||
|
|
||||||
|
<input type="text" id="message" placeholder="Введите сообщение" value="Hello from robot!">
|
||||||
|
<button onclick="sendData()" id="sendBtn" disabled>Отправить (Datagram)</button>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const statusEl = document.getElementById('status');
|
||||||
|
const sendBtn = document.getElementById('sendBtn');
|
||||||
|
const messageEl = document.getElementById('message');
|
||||||
|
let transport;
|
||||||
|
|
||||||
|
// Адрес должен быть wss:// (WebTransport использует HTTPS, но в JS URL начинается с wt://)
|
||||||
|
// НО: WebTransport API требует URL, начинающийся с 'https://'
|
||||||
|
const url = 'https://wt.shaiheprjct.ru/wt';
|
||||||
|
|
||||||
|
async function connect() {
|
||||||
|
try {
|
||||||
|
// Инициализация WebTransport
|
||||||
|
transport = new WebTransport(url);
|
||||||
|
statusEl.innerText = 'Статус: Подключение к QUIC...';
|
||||||
|
|
||||||
|
// Ждем готовности
|
||||||
|
await transport.ready;
|
||||||
|
statusEl.innerText = 'Статус: Подключено (WebTransport/h3)';
|
||||||
|
statusEl.style.color = 'green';
|
||||||
|
sendBtn.disabled = false;
|
||||||
|
|
||||||
|
// Обработка закрытия
|
||||||
|
transport.closed.then(() => {
|
||||||
|
statusEl.innerText = 'Статус: Соединение закрыто';
|
||||||
|
statusEl.style.color = 'red';
|
||||||
|
sendBtn.disabled = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
statusEl.innerText = `Ошибка подключения: ${e}`;
|
||||||
|
statusEl.style.color = 'red';
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function sendData() {
|
||||||
|
if (!transport) return;
|
||||||
|
const message = messageEl.value;
|
||||||
|
const encoder = new TextEncoder();
|
||||||
|
const data = encoder.encode(message);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Отправка датаграммы (самый быстрый способ)
|
||||||
|
const writer = transport.datagrams.writable.getWriter();
|
||||||
|
await writer.write(data);
|
||||||
|
writer.releaseLock();
|
||||||
|
console.log('Данные отправлены:', message);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Ошибка отправки:', e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Начинаем подключение при загрузке
|
||||||
|
connect();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user