Javascript Python WebSocket在Raspbery上不起作用

Javascript Python WebSocket在Raspbery上不起作用,javascript,python,websocket,raspberry-pi,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_com

使用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时,safari中出现错误“WebSocket网络错误:操作无法完成。连接被拒绝”

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

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


如果你知道问题出在哪里,我很乐意知道。多谢各位

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

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

  • 更新到Python版本3.6。websockets包似乎只能在Python版本3.6中使用。以下是我用来在RPi上安装Python 3.6的教程:
  • 在python中使用
    0.0.0.0
    而不是
    localhost
    作为主机。在RPi终端中的
    sudo netstat-lptu
    上,我可以看到所有其他端口(mqtt、ssh等)都设置为
    0.0.0
    ,而不是
    localhost
    ,所以我只是尝试了一下,它就工作了

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

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

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

  • 更新到Python版本3.6。websockets包似乎只能在Python版本3.6中使用。以下是我用来在RPi上安装Python 3.6的教程:
  • 在python中使用
    0.0.0.0
    而不是
    localhost
    作为主机。在RPi终端中的
    sudo netstat-lptu
    上,我可以看到所有其他端口(mqtt、ssh等)都设置为
    0.0.0
    ,而不是
    localhost
    ,所以我只是尝试了一下,它就工作了

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

你能展示一下你是如何使用Strompreisgenerator的吗?你能写下当你运行
nc-v www.tobiaschmocker.ch 5001
@YonatanKiron和
nc-v www.tobiaschmocker.ch 5001
i get:
nc:连接到www.tobiaschmocker.ch端口5001(tcp)时会发生什么吗失败:连接被拒绝
@RetoAebersold我在代码下面创建了strompreisegenerator的实例。我从终端运行py文件:
python3路径/strompreisegenerator.py
。程序中还有一个MQTT客户端发布。MQTT代理在www.tobiaschmocker.ch上的端口1883上运行,现在我使用cronjob发布主题“Sarah”。我希望这不会干扰websocket。MQTT工作正常,但websocket不工作。我只有在RPi上运行这个程序时才会出现这个问题——在我的mac上,它可以正常工作。如果您想尝试Websocket或MQTT,我将保持程序运行。@agittarius,当您从RPi运行它时,使用域名称localhost,和127.0.0.1。您能演示一下如何使用Strompreisgenerator吗?您能写下运行
nc-v www.tobiaschmocker.ch 5001
@YonatanKiron和
nc-v www.tobiaschmocker.ch 5001
时会发生什么吗?我得到:
nc:连接到www.tobiaschmocker.ch端口5001(tcp)失败:连接被拒绝
@RetoAebersold我在代码下面创建了strompreisegenerator的实例。我从终端运行py文件:
python3路径/strompreisegenerator.py
。程序中还有一个MQTT客户端发布。MQTT代理在www.tobiaschmocker.ch上的端口1883上运行,现在我使用cronjob发布主题“Sarah”。我希望这不会干扰websocket。MQTT工作正常,但websocket不工作。我只有在RPi上运行这个程序时才会出现这个问题——在我的mac上,它可以正常工作。如果您想试用Websocket或MQTT,我会让程序继续运行。@agittarius,当您从RPi运行它时,使用域名、localhost和127.0.0.1。感谢您的消息,有效地使用0.0.0.0解决了我的问题。感谢您的消息,有效地使用0.0.0解决了我的问题。