#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. Охххххх, это имеет смысл. Я просветлен. Спасибо!