将数据从后端(python)推送到JS

时间:2016-11-25 14:02:25

标签: javascript python

前端部分

我有一个AJAX请求,它试图每秒从我的后端句柄获取数据。

如果有任何数据,我会获取此数据,将其添加到我的HTML页面(不重新加载),并继续每秒提取数据等待进一步更改。

后端部分

我每分钟都会用Celery解析网页。

从中提取数据并将其传递给数组(这是AJAX请求的触发器,即有新数据)。

问题

在我看来,这个问题还有另一种解决方案。

我不想要求JS中的数据到后端。当有任何更改时,我想将数据从后端传递给JS。但没有页面重新加载。

我该怎么做?

4 个答案:

答案 0 :(得分:1)

是的,有。您可以使用Websockets或SSE(服务器端事件)。基本上这取决于您的具体需求,但请考虑:

websocket - 双向数据流。客户端可以将数据发送到服务器,反之亦然。

  

WebSocket协议支持客户端之间的双向通信   在受控环境中将不受信任的代码运行到远程主机
  已选择通过该代码进行通信。

在Git上查看python-websockets-example以获取Websockets的示例。

SSE - 单向数据流(服务器 - >客户端)

  

使服务器能够通过HTTP或使用将数据推送到网页   专用的服务器推送协议,本规范介绍了   EventSource接口。

     

使用此API包括创建EventSource对象和   注册事件监听器。

Flask example SSS的烧瓶示例。

答案 1 :(得分:1)

对于将来访问此页面的访问者,

将数据从服务器推送到客户端的三种主要技术。

  • 长/短轮询(客户端拉动)
  • WebSockets(服务器推送)
  • 服务器发送事件(服务器推送)。

在实施this great article之前先检查一下。

答案 2 :(得分:0)

您可以使用Push API执行此操作: https://www.w3.org/TR/push-api/

答案 3 :(得分:0)

尝试使用socketio,后端创建一个包含socketio数据的事件,并且您的前端接收事件并下载数据

我以这种方式解决了类似的问题。只有在从后端创建socketio事件时才调用后端。

你必须在某处设置一个带有nodejs的socketio服务器