HTTP-ответ сервера сокетов Micropython с использованием HTML и JS

#javascript #python #html #http #micropython

#javascript #python #HTML #http #micropython

Вопрос:

Хорошо, итак, я работаю с esp8266, прошитым с помощью micropython, и пишу веб-сервер на основе сокетов. Пока все работает. Когда я перехожу к правильному IP-адресу и комбинации портов в моем веб-браузере, я получаю HTTP-ответ от моего сервера, который включает ожидаемый HTML.

Вот где я застрял. Поскольку мое веб-приложение становится все более сложным, я хотел бы отделить мои файлы HTML, JS и CSS, а не использовать встроенные JS и CSS в моем HTML. Однако я не могу понять, как я буду отправлять эти файлы отдельно, на которые будут ссылаться мои index.html файл.

Мой неблокирующий сервер выглядит так:

 def server_connect(server_socket):
    r, _, __, = select.select((server_socket,), (), (), 0)
    if r:
        for _ in r:
            client, client_addr = server_socket.accept()
            try:
                print("nConnected to client at {}".format(client_addr))
                request = client.recv(4096)
                print(request)
                print()

                try:
                    with open("index.html", 'rb') as infile:
                        response_body = infile.read()
                except OSError:
                    response_body = b"No index file found..."

                try:
                    with open("test.js", 'rb') as infile:
                        response_body_2 = infile.read()
                except OSError:
                    response_body_2 = b"No js file found."

                response_header = b"HTTP/1.0 200 OKnContent-Type: text/html; encoding=utf8nn"

                client.send(response_header)
                client.sendall(response_body)
                client.sendall(response_body_2)
                client.close()
            
            except OSError:
                pass
  

Как видно, я просто отправляю текст из двух разных файлов обратно клиенту, и результаты предсказуемы. На моей веб-странице отображается HTML, отформатированный так, как он должен быть, после чего JS в виде обычного текста.

Мое понимание, хотя и ограниченное, заключается в том, что на типичном веб-сервере в ответ на несколько запросов будет отправлено несколько файлов. Таким образом, мой мыслительный процесс заключается в том, что мне нужно отправить мои файлы HTML и JS обратно на отдельные запросы от одного и того же клиента. Итак, возможно, мой вопрос заключается в том, как мне сообщить клиенту, что у меня есть дополнительные файлы для отправки, чтобы клиент, в свою очередь, мог отправлять запросы, которые позволят моему серверу отправлять эти файлы.

Любая помощь приветствуется!

Комментарии:

1. Браузер считывает ваш HTML с помощью одного HTTP GET, а затем, прочитав HTML, автоматически генерирует HTTP GET для всех файлов, на которые ссылаются — JS, CSS, изображений. Все, что вам нужно сделать, это предоставить ссылки в HTML, <script> tags for JS, css stylesheet references, etc.

2. Охххххх, это имеет смысл. Я просветлен. Спасибо!