summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/webrtc-test.html
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/webrtc-test.html')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/webrtc-test.html19
1 files changed, 13 insertions, 6 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/webrtc-test.html b/packages/meshbay-hub/src/meshbay_hub/static/webrtc-test.html
index 0d5750b..46003a7 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/webrtc-test.html
+++ b/packages/meshbay-hub/src/meshbay_hub/static/webrtc-test.html
@@ -68,7 +68,7 @@
<div id="log"></div>
</div>
-<script src="/transport.js"></script>
+<script src="/transport.js?v=2"></script>
<script>
const HUB_URL = window.location.origin;
const params = new URLSearchParams(window.location.search);
@@ -76,13 +76,14 @@ let accessToken = null;
let jwtToken = null;
let transport = null;
let fileIndex = null;
+let connecting = false;
// Pre-fill from URL params
if (params.get('user')) document.getElementById('username').value = params.get('user');
if (params.get('pass')) document.getElementById('password').value = params.get('pass');
if (params.get('node')) document.getElementById('node-id').value = params.get('node');
if (params.get('group')) document.getElementById('group-id').value = params.get('group');
-if (params.get('file')) document.getElementById('file-id').value = params.get('file');
+if (params.get('file')) document.getElementById('file-id').value = params.get('file').replace(/\s+/g, '');
// Auto-run if all params provided
if (params.get('auto')) {
@@ -143,10 +144,14 @@ async function doLogin() {
}
async function doConnect() {
+ if (connecting) { logMsg('warn', 'Connect already in progress'); return; }
const nodeId = document.getElementById('node-id').value;
const groupId = document.getElementById('group-id').value;
if (!nodeId) { logMsg('warn', 'Enter a node ID'); return; }
+ connecting = true;
+ if (transport) { transport.close(); transport = null; }
+
logMsg('info', `Connecting to node ${nodeId.substring(0, 8)}... via WebRTC`);
setStep('step-connect', 'active');
@@ -164,7 +169,7 @@ async function doConnect() {
logMsg('ok', `WebRTC connected in ${elapsed}ms`);
logMsg('ok', ` MNP handshake_ack — node_pk: ${ack.node_pk?.substring(0, 16)}...`);
- logMsg('ok', ` DataChannel: open, ordered, reliable`);
+ logMsg('ok', ` DataChannel state: ${transport._channel?.readyState}`);
setStep('step-connect', 'done');
document.getElementById('connect-status').innerHTML = '<span class="badge">P2P OK</span>';
document.getElementById('btn-index').disabled = false;
@@ -173,11 +178,13 @@ async function doConnect() {
logMsg('err', `Connection FAILED: ${e.message}`);
setStep('step-connect', 'fail');
document.getElementById('connect-status').innerHTML = '<span class="badge fail">FAIL</span>';
+ } finally {
+ connecting = false;
}
}
async function doFetchIndex() {
- logMsg('info', 'Fetching Mesh Group Index via DataChannel...');
+ logMsg('info', `Fetching Mesh Group Index... (channel: ${transport?._channel?.readyState})`);
try {
const t0 = performance.now();
const indexBytes = await transport.fetchIndex();
@@ -210,7 +217,7 @@ async function doFetchIndex() {
}
async function doFetchChunk() {
- let fileId = document.getElementById('file-id').value.trim();
+ let fileId = document.getElementById('file-id').value.replace(/\s+/g, '');
if (!fileId) {
logMsg('warn', 'Enter a file_id (blake3 hex hash from node indexer log)');
@@ -219,7 +226,7 @@ async function doFetchChunk() {
return;
}
- logMsg('info', `Fetching chunk 0 of file ${fileId.substring(0, 16)}... via DataChannel...`);
+ logMsg('info', `Fetching chunk 0 of ${fileId.substring(0, 16)}... (channel: ${transport?._channel?.readyState})`);
try {
const t0 = performance.now();