iOS忽略NodeMCU http服务器响应和浏览器显示没有连接

时间:2016-06-09 23:00:21

标签: lua nodemcu

所以我最近得到了一个nodeMCU Lua V1,我启动它连接到我的WiFi,并从https://en.wikipedia.org/wiki/NodeMCU#HTTP_server加载了默认的HTTP服务器。兴奋地,我在我的ADSL路由器上做了一个端口前进,并要求朋友连接以查看我的hello world响应。我的朋友有苹果设备(iPhone / iPad)无法加载网站。与Android设备或计算机的朋友一起查看网站没有问题。我尝试使用同一WiFi网络上的iPad。它也有这种行为。为了弄清楚发生了什么,我在iPad上尝试了不同的浏览器。我做了一个Wireshark跟踪,看到NodeMCU将响应发送到iPad。但iPad一直显示连接错误,或者你是离线消息。认为它可能是缺少的html标题我改变了nodeMCU发送到的响应:

<!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>

iPad仍显示相同的信息。

所以我的问题是为什么iOS会以这种方式运行,什么阻止它并让浏览器认为它没有互联网连接? iOS上的浏览器是以这种方式运行,还是操作系统做了一些奇怪的事情。为了让iOS设备看到网页,我需要做些什么?

1 个答案:

答案 0 :(得分:1)

天哪,维基百科的文章确实很糟糕(另见https://github.com/nodemcu/nodemcu-firmware/issues/832)。我已经多次看过这个代码示例,但从未意识到它源自何处。

首先,您不应该使用您的NodeMCU模块可能加载的旧的0.9.x二进制文件。它们不再受支持并且包含许多错误。来自devmaster分支的Build a custom firmware。其次,查看socket:send()上的官方文档,了解如何正确执行此操作。

实际问题是conn:send("<h1> Hello, NodeMcu.</h1>"),因为该消息不是有效的HTTP响应。您需要使用HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n作为前缀。

类似问题&amp;答案为herehere