【问题标题】:Javascript - Websockets error ERR_NAME_NOT_RESOLVEDJavascript - Websockets 错误 ERR_NAME_NOT_RESOLVED
【发布时间】:2017-11-03 15:07:05
【问题描述】:

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

到 'ws://raspberrypi:8080/' 的 WebSocket 连接失败:错误 连接建立: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

【问题讨论】:

    标签: javascript python websocket apache2 raspberry-pi3


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      树莓派 192.168.0.20

      ip 地址是你的树莓派的 ip

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-28
        • 2016-04-15
        • 1970-01-01
        • 2021-02-11
        • 2015-10-06
        • 1970-01-01
        相关资源
        最近更新 更多