# 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