让python通过浏览器与本地Flask应用程序对话

Make python talk to local Flask app via browser

本文关键字:Flask 应用程序 对话 python 浏览器      更新时间:2023-09-26

这可能是一个简单的体系结构问题,但我无法解决。

我所拥有的:

基本上,我有两个应用程序在我的树莓派本地运行:

  • 一个C++应用程序(Voicecommand),它允许我从麦克风执行命令并运行各种python脚本。在某些关键字上,我可以运行python脚本来打开浏览器或做任何事情
  • 一个简单的Flask应用程序,有几个基本视图

我想要什么:

当我说一个关键词(例如天气)时,我希望我当地的Flask应用程序返回天气(已经有了这个功能和视图),最好是在小框架中,而不重新加载整个页面。

我的想法:

我想过让我的本地应用程序在浏览器中进行JS调用,但真的不知道怎么做。我能想到的最好的事情是用Applescript在浏览器中注入JS调用。。。从那时起,我可以很容易地对天气视图进行ajax调用,并在不刷新页面的情况下返回结果。我也想过使用React或Angular之类的东西,或者连接这两个应用程序,但我不能100%确定如何连接。

这有点棘手,因为您想根据服务器上的某个事件更新客户端,而通常情况下交互都是单向的(即客户端发出请求,服务器响应,仅此而已)。

我要做的是建立某种双向协议,比如WebSockets。Flask的一个不错的库是Flask SocketIO。然后,您可以让C++应用程序中的Python脚本在Flask应用程序中到达一个端点,该端点可以向客户端emit()发送消息。在客户端,您可以接收这些事件并相应地更新您的视图。