首页 > 解决方案 > 如何自动将数据从服务器重定向到客户端

问题描述

我正在开发一个使用 python3.5 作为后端、javascript +react/redux 作为前端和 Django 服务器的 Web 应用程序。

该应用程序的目标是实时显示一些运行在不同协议(MQTT、XMPP 和 CoaP)下的树莓派 PI 发送的数据。我告诉我的 django 服务器向处理不同协议的不同服务器发出 get 请求,然后将这些数据保存到数据库中,我最终可以将其检索到我的 redux 存储中,然后在我的客户端上显示这些数据。

我希望能够删除数据库部分的保存,这意味着我的 Django 服务器必须将它接收到的数据直接转发到客户端。

我已经进行了一些研究,似乎 websocket 编程是最好的方法,但是我有这样一个不同的架构,所以我不确定我是否能够使用它,除非我从头开始,这会很糟糕. 如果您有任何其他想法可以做我想做的事,或者如果您有一些建议来改造我的应用程序,那就太好了。

标签: javascriptpythondjangowebsocketreact-redux

解决方案


我也遇到过类似的问题,有几种方法可以解决。在我看来,最好的方法是使用这样的服务器发送事件

在 javascript 客户端中:

var evtSource = new EventSource("myScriptInRpi");

evtSource.onmessage = function(e) {
  //code
}

优点是您可以直接从树莓派向客户端发送数据。但是如果你想从django得到它,你可以做到。


推荐阅读