#!/usr/bin/env python3 """Test manuel du proxy-console, comme le ferait le navigateur (étape 9) : pas de sous-protocole demandé, contrairement au test direct de nova-serialproxy.""" import sys import time import websocket url = sys.argv[1] commande = sys.argv[2] if len(sys.argv) > 2 else "echo bonjour-syllabus" def lire(ws, duree=3): fin = time.time() + duree sortie = b"" while time.time() < fin: ws.settimeout(max(0.2, fin - time.time())) try: morceau = ws.recv() except websocket.WebSocketTimeoutException: break except websocket.WebSocketConnectionClosedException: print("[connexion fermée par le serveur]") break if isinstance(morceau, str): morceau = morceau.encode() if not morceau: break sortie += morceau return sortie ws = websocket.create_connection(url, timeout=10) print("=== lecture initiale ===") sys.stdout.buffer.write(lire(ws, 3)) print("\n=== connexion : eleve ===") ws.send_binary(b"eleve\r") sys.stdout.buffer.write(lire(ws, 2)) print("\n=== mot de passe ===") ws.send_binary(b"eleve\r") sys.stdout.buffer.write(lire(ws, 2)) print(f"\n=== commande : {commande} ===") ws.send_binary((commande + "\r").encode()) sys.stdout.buffer.write(lire(ws, 3)) ws.close() print("\n=== fin ===")