Javascript - Websockets 错误 ERR_NAME_NOT_RESOLVED

Javascript - Websockets error ERR_NAME_NOT_RESOLVED

我目前正在使用 raspberry pi (RPI) 和 LAMP 在我的本地网络上托管我的网页,该网络使用 websocket 流式传输一些表示 LED 状态的数据。我的问题是,在尝试建立 websocket 连接时,出现以下错误:

WebSocket connection to 'ws://raspberrypi:8080/' failed: Error in connection establishment: net::ERR_NAME_NOT_RESOLVED

我认为我的错误只是由于不正确 URL 但我在研究中没有找到解决此错误的另一个例子。

当我尝试通过 LAN 在笔记本电脑上建立连接时出现此错误。如果我在 raspberry 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

这看起来像是纯粹的 DNS 问题。 您可能想要编辑您的主机文件(在 linux 下它通常是 /etc/hosts,在 windows 下它应该是 c:\windows\system32\drivers\etc)以包含 raspberrypi 的 ip。类似于:

树莓派 192.168.0.20

这里的ip地址是你树莓派的ip

原来 Apache 是一个 http 服务器,不支持 websockets(没有第 3 方软件)。我现在已经使用 Flask-SocketIO 成功设置了一个 websocket。