我目前正在使用带有LAMP的覆盆子pi(RPI)在我的本地网络上托管我的网页,该网络使用websocket来传输代表LED状态的一些数据。我的问题是,在尝试建立websocket连接时,我收到以下错误:
WebSocket连接到' ws:// raspberrypi:8080 /'失败:错误 连接建立:net :: ERR_NAME_NOT_RESOLVED
我认为我的错误只是因为网址不正确,但我没有找到另一个在我的研究中如何解决此错误的示例。
当我尝试通过LAN在笔记本电脑上建立连接时,会发生此错误。如果我在我的覆盆子pi上访问我的浏览器并尝试建立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
答案 0 :(得分:1)
原来Apache是一个http服务器,不能支持websockets(没有第三方软件)。我现在已经使用Flask-SocketIO成功设置了一个websocket。
答案 1 :(得分:0)
这看起来像一个纯粹的DNS问题。 您可能想要编辑您的hosts文件(在linux下它通常是/ etc / hosts,在windows下它应该是c:\ windows \ system32 \ drivers \ etc)以包含raspberrypi的ip。类似的东西:
raspberrypi 192.168.0.20
其中ip地址是你的覆盆子的ip