【发布时间】: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