Python WebSocket不适用于Raspbery

时间:2018-02-04 21:47:11

标签: javascript python websocket raspberry-pi

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

在raspberry pi上运行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时出现错误“WebSocket网络错误:操作无法完成。连接被拒绝”在safari中发生。

端口5001在RPi上打开。我也试过本地IP。我在路由器上转发了端口,但仍然没有。如果我试图其他网址我得到另一个错误,所以我想网址是正确的,但我没有任何权利。

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

如果你知道,问题所在,我很高兴知道。非常感谢你!

1 个答案:

答案 0 :(得分:1)

现在,websocket正在运行并可通过外部网址获取!

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

  • 更新到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所以我只是尝试了它的工作原理。< / LI>

设置完所有后,websocket现在正在运行。感谢@YonatanKiron&amp; @Reto!