【问题标题】:Python WebSocket is not working on RaspberyPython WebSocket 不适用于 Raspberry
【发布时间】:2018-02-04 21:47:11
【问题描述】:

使用 localhost 在 mac 上运行服务器和客户端一切正常。

在树莓派上运行 python 程序(服务器)并尝试使用其 url 访问它不起作用。

Python 服务器:

class Strompreisgenerator:
    def __init__(self):
        self.ws = websockets.serve(self.echo, 'localhost', 5001)
        asyncio.get_event_loop().run_until_complete(self.ws)
        asyncio.get_event_loop().run_forever()

    async def echo(self, websocket, path):
        async for message in websocket:
            print(message)

Javascript 客户端:

var ws = new WebSocket("ws://www.tobiasschmocker.ch:5001");

在尝试实例化 WebSocket 时,在 safari 中出现错误“WebSocket 网络错误:操作无法完成。连接被拒绝”

5001 端口在 RPi 上打开。我也试过本地IP。我在路由器上转发了端口,但仍然没有。如果我尝试其他 url,我会得到另一个错误,所以我认为 url 是正确的,但不知何故我没有权利。

在我的 RPi 上,我启用了 ssh,还有 php、apache、mysql 和我的 python 服务器的所有 pip 包。

如果您知道问题出在哪里,我很乐意知道。非常感谢!

【问题讨论】:

  • 您能说明一下您是如何使用您的 Strompreisgenerator 的吗?
  • 你能写下你运行nc -v www.tobiasschmocker.ch 5001987654323时会发生什么
  • @YonatanKiron 和 nc -v www.tobiasschmocker.ch 5001 我得到:nc: connect to www.tobiasschmocker.ch port 5001 (tcp) failed: Connection refused
  • @RetoAebersold 我在代码的更下方创建了一个 Strompreisgenerator 实例。我从终端运行 py 文件:python3 path/Strompreisgenerator.py。程序中还有一个 MQTT-Clients 发布。 MQTT-Broker 在 www.tobiasschmocker.ch 的 1883 端口上运行,现在我使用 cronjob 发布主题“Sarah”。我希望这不会干扰 websocket。 MQTT 工作正常,但 websocket 不行。只有当我在 RPi 上运行程序时我才会遇到这个问题 - 在我的 Mac 上它工作正常。如果您想试用 Websocket 或 MQTT,我会继续运行程序。
  • @agittarius 以及当您从 RPi 运行它时,使用域名、localhost 和 127.0.0.1。

标签: javascript python websocket raspberry-pi


【解决方案1】:

现在 websocket 正在运行,并且可以通过外部 url 访问!

以下是完整性的解决方案。我所要做的就是:

  • 更新到 Python 3.6 版。 websockets 包似乎仅适用于 Python 3.6 版。这是我用来在我的 RPi 上安装 Python 3.6 的教程:https://gist.github.com/dschep/24aa61672a2092246eaca2824400d37f
  • 使用 0.0.0.0 而不是 localhost 作为 python 中的主机。在 RPi 终端的sudo netstat -lptu 上,我可以看到所有其他端口(mqtt、ssh 等)都设置为0.0.0.0 而不是localhost,所以我尝试了一下,它可以工作。

设置完所有这些,websocket 现在正在运行。感谢@YonatanKiron 和@Reto!

【讨论】:

  • 感谢您的留言,有效地使用 0.0.0.0 解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2015-08-23
  • 2015-12-28
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
相关资源
最近更新 更多