# SPDX-FileCopyrightText: 2023 Dan Halbert for Adafruit Industries # # SPDX-License-Identifier: Unlicense from time import monotonic import socketpool import wifi from adafruit_httpserver import Server, Request, Response, Websocket, GET pool = socketpool.SocketPool(wifi.radio) server = Server(pool, debug=True) websocket: Websocket = None next_message_time = monotonic() HTML_TEMPLATE = """ Websocket Client
""" @server.route("/client", GET) def client(request: Request): return Response(request, HTML_TEMPLATE, content_type="text/html") @server.route("/connect-websocket", GET) def connect_client(request: Request): global websocket if websocket is not None: websocket.close() # Close any existing connection websocket = Websocket(request) return websocket server.start(str(wifi.radio.ipv4_address)) while True: server.poll() # Check for incoming messages from client if websocket is not None: if (message := websocket.receive(True)) is not None: print("Received message from client:", message) # Send a message every second if websocket is not None and next_message_time < monotonic(): websocket.send_message("Hello from server") next_message_time = monotonic() + 1