我目前正在使用带有 LAMP 的树莓派 (RPI) 在我的本地网络上托管我的网页,该网络使用 websocket 流式传输一些表示 LED 状态的数据。我的问题是,在尝试建立 websocket 连接时,出现以下错误:
WebSocket connection to 'ws://raspberrypi:8080/' failed: Error in connection establishment: net::ERR_NAME_NOT_RESOLVED
我认为我的错误只是因为 URL 不正确,但我在研究中没有找到解决此错误的另一个示例。
当我尝试通过 LAN 在笔记本电脑上建立连接时会发生此错误。如果我在树莓派上打开浏览器并尝试建立 websocket,则不会发生此错误。那么这是否意味着我的服务器 (apache2) 可能挡路了?
这是我为客户端编写的 Javascript 文件:
addEventListener('load',init);
function init() {
console.log('page ready');
var ws = new WebSocket('ws://raspberrypi:8080/');
console.log(ws);
}
这是我的 python 脚本,它输出我想要流式传输的数据:
from gpiozero import LED
import time
import sys
if __name__ == "__main__":
led = LED(3);
while True:
led.on()
print 1
sys.stdout.flush() #flush: print to screen immediately
time.sleep(1.5)
led.off()
print 0
sys.stdout.flush() #flush: print to screen immediately
time.sleep(1.5)
这是在 pi 上建立 websocket 的终端反馈: snapshot
最佳答案
原来 Apache 是一个 http 服务器,不支持 websockets(没有第 3 方软件)。我现在已经使用 Flask-SocketIO 成功设置了一个 websocket。
关于Javascript - Websockets 错误 ERR_NAME_NOT_RESOLVED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47098851/