前端部分
我有一个AJAX请求,它试图每秒从我的后端句柄获取数据。
如果有任何数据,我会获取此数据,将其添加到我的HTML页面(不重新加载),并继续每秒提取数据等待进一步更改。
后端部分
我每分钟都会用Celery解析网页。
从中提取数据并将其传递给数组(这是AJAX请求的触发器,即有新数据)。
问题
在我看来,这个问题还有另一种解决方案。
我不想要求JS中的数据到后端。当有任何更改时,我想将数据从后端传递给JS。但没有页面重新加载。
我该怎么做?
答案 0 :(得分:1)
是的,有。您可以使用Websockets或SSE(服务器端事件)。基本上这取决于您的具体需求,但请考虑:
websocket - 双向数据流。客户端可以将数据发送到服务器,反之亦然。
WebSocket协议支持客户端之间的双向通信 在受控环境中将不受信任的代码运行到远程主机
已选择通过该代码进行通信。
在Git上查看python-websockets-example以获取Websockets的示例。
SSE - 单向数据流(服务器 - >客户端)
使服务器能够通过HTTP或使用将数据推送到网页 专用的服务器推送协议,本规范介绍了 EventSource接口。
使用此API包括创建EventSource对象和 注册事件监听器。
Flask example SSS的烧瓶示例。
答案 1 :(得分:1)
对于将来访问此页面的访问者,
将数据从服务器推送到客户端的三种主要技术。
在实施this great article之前先检查一下。
答案 2 :(得分:0)
您可以使用Push API执行此操作: https://www.w3.org/TR/push-api/
答案 3 :(得分:0)
尝试使用socketio,后端创建一个包含socketio数据的事件,并且您的前端接收事件并下载数据
我以这种方式解决了类似的问题。只有在从后端创建socketio事件时才调用后端。
你必须在某处设置一个带有nodejs的socketio服务器