javascript - 使用 ReactJS+ChartJS+SSE 的实时应用
问题描述
我正在尝试构建 reactjs 应用程序。在这个应用程序中,我想使用 chartjs 通过订阅服务器发送的事件(SSE)来显示折线图。
当有来自 SSE 的新消息时,我想更新折线图。为此,我开发了下面的代码,但是当有新消息时图表没有更新。我正在控制台中打印新的消息值,我可以看到这些消息。但是我的图表没有实时更新。
例如,如果有来自 SSE 的新消息,则需要更新图表。
当我最小化浏览器并通过浏览器最大化时,该图表正在使用拉取的消息值进行更新。一旦客户端连接到我的 SSE 发出的服务器。
请在此处找到屏幕截图
这是代码
let xAxis =[];
let yAxis=[];
class LineChartComponent extends Component
{
constructor(props) {
super(props);
this.state ={
data: []
}
this.eventSource = new EventSource('http://mydomainname:8090/kafka-messages');
}
componentWillMount() {
this.eventSource.onmessage = (e) => this.updateChart(JSON.parse(e.data));
}
updateChart(message){
let trgTS =message.TrgTS;
let value =parseFloat(100.0*message.Attributes[0].V/message.Attributes[1].V).toFixed(2);
xAxis.push(trgTS);
yAxis.push(value)
console.log(trgTS,value); // I can see the new messages values in console
this.setState(Object.assign({}, {
data: {
labels: xAxis,
datasets:[
{
label:'cycle time',
data: yAxis ,
fill: false,
borderColor: "#3cba9f"
}
]
}
}));
}
render()
{
return(
<div>
<Line data = {this.state.data} options = {{ maintainAspectRatio: false }} />
</div>
)
}
}
解决方案
推荐阅读
- twilio-api - 提交 wastapp 查询时的 twilio API 问题
- r - 创建一个 geom_bar,并根据每个帐户说出单词的次数为每个条着色
- ruby-on-rails - Rails 系统测试在没有加载资产的情况下运行
- r - 防止长行的 [R] 数据帧被截断?
- python - 在 Python 中抓取和旋转代理
- javascript - 使用 Mongoose 按日期范围查询格式为 MM/DD/YY h:m 并键入字符串的日期
- ocaml - 创建一个以 Hashtbl 作为属性的个人类型
- sql - 在 PostgreSQL 中添加负间隔
- minecraft - 命令块命令中使用什么颜色格式?
- c++ - ESP32 正则表达式搜索所有迭代