如何在 运行 python 进程和 javascript 之间传递数据

How to pass data between running python process and javascript

我正在使用 python 开发个人语音助手应用程序,我想为其添加一个 Web 界面,以允许从任何设备远程使用它。我已经有了它的 Python 面,我想将它与 Web 界面混合使用。也许通过监听线程中的套接字。我对 Python 有经验,但对 JS 不是很了解。

我最理想的是有一个 运行 python 过程。然后 HTML JS 客户端录制用户的语音,将其转换为文本并发送到 python 服务器。 Python 服务器接收命令,并运行一个函数,并且 returns 一个 json 数据,如:

{
'reply':'All done, here is your result', 
'data':someBigHTMLoutput, 
'audio':path to generated mp3 audio file of speech using customized voice
}

Html 可以是一个很大的 table,例如找到的书籍或电影,或其他一些报告。或者如果命令是关灯,它可以是空白的。

然后JS需要接收这个数据,用html数据替换'content'div,显示AI回答文本,播放服务器生成的tts音频文件。并等待下一个命令。

所以,从这一切我想知道如何在没有页面刷新的情况下处理 js 客户端和 python 服务器数据交换?

只用 python 监听套接字就足够了吗?但是我如何 return 将数据返回给 JS?

另外一个问题是:是否可以在函数执行之前和期间推送一些数据?目前,我的 Python 语音助手有时可能会在功能执行之前、期间和之后发生 'say' 事情。有什么方法可以将此声音也发送到 html 页面吗?如果不是,我会重新考虑 AI 答案的逻辑,让它只在 'work is done'.

之后回复

我花了很多时间在谷歌上搜索这个,但我只是对大量的框架选择感到困惑,而我什至不确定我是否需要它们中的任何一个来完成这个相对简单的任务。

谢谢! Python3.4

我最终使用了 Flask、Flask-SocketIO 和 JavaScript 以及 socketio。

很有魅力。谢谢。它允许我随时发出事件,这使得构建基于 HTML+JS 的前端 UI,与 python 服务器实时交互变得非常容易。