Я не могу получить доступ к моему веб-серверу в моем комплекте разработчика NodeMCU через мой iPhone

Я совсем новичок в Lua. Я пытался решить следующую проблему самостоятельно, но я не мог понять это. Вот моя проблема:

Я запускаю веб-сервер на своем NodeMCU devkit v0.9. Я могу легко получить доступ к веб-серверу на своем собственном компьютере, но если я попытаюсь получить доступ к серверу через свой iPhone или с помощью модуля requests в Python, я всегда получаю сообщение The network connection was lost. Я использую следующую прошивку: nodemcu_float_0.9.6-dev_20150704 .

print(wifi.sta.getip())
led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
srv=net.createServer(net.TCP,30)
srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
    local buf = "";
    local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
    if(method == nil)then
        _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
    end
    local _GET = {}
    if (vars ~= nil)then
        for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
            _GET[k] = v
        end
    end
    buf = buf.."<h1> ESP8266 Web Server</h1>";
    buf = buf.."<p>GPIO0 <a href=\"?pin=led1\"><button>SWITCH LIGHTS</button></a></p>";
    buf = buf.."<p>"..gpio.read(led1).."</p>";
    local _on,_off = "",""
    if(_GET.pin == "led1")then
        if(gpio.read(led1) == 1) then
            gpio.write(led1, gpio.LOW);
        else 
            gpio.write(led1, gpio.HIGH);
        end
    else end
    client:send(buf);
    client:close();
    end)
end)

person Viktor    schedule 07.04.2016    source источник
comment
Версии 0.9.x безнадежно устарели и больше не поддерживаются. Создайте собственную прошивку в соответствии с nodemcu.readthedocs.org/en/dev/en/build. и повторите попытку. Пример веб-сервера есть на git.io/vVy4G, но рано или поздно он может быть удален git.io/vVy4C.   -  person Marcel Stör    schedule 09.04.2016
comment
Эй, хорошо, я решил это. Ваше решение не сработало для меня. Но спасибо, что нашли время, чтобы помочь мне!   -  person Viktor    schedule 14.04.2016
comment
Так в чем была проблема? Пожалуйста, напишите ответ на свой вопрос, чтобы другие могли извлечь из него уроки.   -  person Marcel Stör    schedule 14.04.2016


Ответы (1)


Я смог решить эту проблему, добавив некоторую информацию в начало html-буфера. Заменить: local buf='' на local buf="HTTP/1.1 200 OK\r\nContent-type: text/html\r\nConnection: close\r\n\r\n"

Я думаю, настольные браузеры просто более снисходительны в этом отношении.

person nickexists    schedule 09.05.2016
comment
вы также можете создать файл .html, который вы можете отправить вместо исходного кода. - person Viktor; 14.06.2016