ESP8266 Station模式下EventSource动态拼接IP地址失效问题求助
问题解决:ESP8266动态IP下EventSource的URL拼接问题
首先看你代码里的拼写错误:你定义的str3 = '/see',但注释里能正常工作的路径是/sse,这大概率是导致动态拼接失效的直接原因——你拼接出来的实际路径是http://xxx.xxx.xxx.xxx/see,而ESP8266的SSE端点是/sse,路径不匹配自然无法正常连接。
可行解决方案
方案1:使用相对路径(最推荐)
完全不用拼接IP,直接用相对路径初始化EventSource,浏览器会自动基于当前页面的地址(也就是ESP8266的动态IP)补全完整URL:
var source = new EventSource('/sse');
方案2:用location.origin拼接绝对路径
如果需要绝对路径,用location.origin替代手动拼接协议和IP,它会自动包含当前页面的协议(http/https)、主机IP和端口号,避免手动拼接的错误:
let strIpAddress = location.origin + '/sse'; var source = new EventSource(strIpAddress);
可选:给ESP8266绑定静态IP
如果你希望IP固定,可以在路由器的DHCP设置里,给ESP8266的MAC地址分配固定IP,这样每次模块连接Wi-Fi都会拿到同一个IP,也能解决问题,但这属于网络配置层面的方案,不是必须的。
额外排查点
如果修正拼写后还是有问题,可以检查:
- 确认ESP8266的SSE服务端端点确实是
/sse,没有拼写错误 - 检查浏览器控制台的网络请求,看EventSource的请求是否返回200状态码,有没有报错信息
- 确认
location.host是否包含端口号(如果ESP8266的web服务不是用80端口),此时用location.origin会更可靠
内容的提问来源于stack exchange,提问作者Michael Wenning
相关产品推荐
相关产品推荐

