Files
lang/test_chunks.py
T

35 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""Test: send chunked base64 to WS, check if server receives all chunks."""
import asyncio, json, websockets, base64, os, sys
# Generate fake audio — random bytes, base64 encoded
fake_audio = base64.b64encode(os.urandom(40000)).decode() # ~53KB base64
CHUNK = 14000
total = (len(fake_audio) + CHUNK - 1) // CHUNK
async def test():
uri = "wss://proxy.kube5s.ru/ws"
print(f"Connecting to {uri}...")
async with websockets.connect(uri) as ws:
print(f"Connected. Sending {total} chunks of {CHUNK} chars each (total b64: {len(fake_audio)} chars)...")
for i in range(total):
chunk = fake_audio[i*CHUNK:(i+1)*CHUNK]
msg = json.dumps({"c": i, "n": total, "t": "test", "b": chunk, "m": "audio/webm"})
await ws.send(msg)
print(f" chunk {i+1}/{total} sent ({len(chunk)} chars)")
await asyncio.sleep(0.15) # 150ms между чанками — чтобы DPI не дрочил
# Final
await asyncio.sleep(0.15)
await ws.send(json.dumps({"c": -1}))
print(" final sent, waiting for response...")
try:
resp = await asyncio.wait_for(ws.recv(), timeout=30)
data = json.loads(resp)
print(f"Response: {data}")
except asyncio.TimeoutError:
print("TIMEOUT — no response")
asyncio.run(test())